[C#] ArrayList.Contains() methode

Pagina: 1
Acties:

  • Jabbah
  • Registratie: Februari 2004
  • Laatst online: 21-05 11:01
Met de ArrayList.Contains(object o) methode kan je controleren of een bepaald object reeds in een ArrayList voorkomt.

Maar is het ook mogelijk om op een property van een bepaald object te checken?

Dus stel ik heb een object met een bepaald ID. Nu wil ik weten of er al een object met hetelfde ID voorkomt in de ArrayList. De overige properties van het object hoeven niet hetzelfde te zijn.

Is dit op een makkelijke manier mogelijk of moet ik zelf de logica schrijven om dit te checken?

Implementatie in in C#

[ Voor 3% gewijzigd door Jabbah op 31-08-2004 10:15 ]


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Welke taal ?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • Jabbah
  • Registratie: Februari 2004
  • Laatst online: 21-05 11:01
Oops sorry. In C#

Ik kan zelf de topic titel niet aanpassen?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 23:25

Janoz

Moderator Devschuur®

!litemod

Titel aangepast.

Waneer je zelf een class maakt met een specifieke eis dat iets gelijk is waneer de ID gelijk is dan zou je dat in de equals methode kunnen implementeren. Ikzelf ken Java beter, en daar kun je gewoon de equals en hash methode overriden. Zet je hier in dat hij alleen ID moet vergelijken dan werkt de contains methode van ArrayList.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Amras
  • Registratie: Januari 2003
  • Laatst online: 01-10-2025
Janoz schreef op 31 augustus 2004 @ 10:19:
Titel aangepast.

Waneer je zelf een class maakt met een specifieke eis dat iets gelijk is waneer de ID gelijk is dan zou je dat in de equals methode kunnen implementeren. Ikzelf ken Java beter, en daar kun je gewoon de equals en hash methode overriden. Zet je hier in dat hij alleen ID moet vergelijken dan werkt de contains methode van ArrayList.
Dit werkt in C# ook prima. :)

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
In C# is het trouwens de Equals methode ( met hoofdletter ) maar dat kan je allemaal in de documentatie lezen. Let er trouwens op dat als je de Equals methode override dat je dan de GetHashCode eigenlijk ook moet overidden anders kan je vreemd gedrag verwachten in onder andere de HashTable

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Equals overriden in je class. Let er op dat zodra je dat doet, niet alleen Contains daarmee werkt, maar ook IndexOf en Remove. Als je dat niet wilt, heb je een probleem.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
EfBe schreef op 31 augustus 2004 @ 21:12:
Equals overriden in je class. Let er op dat zodra je dat doet, niet alleen Contains daarmee werkt, maar ook IndexOf en Remove. Als je dat niet wilt, heb je een probleem.
Op zich valt het nog wel mee dat probleem. Je moet dan alleen niet meer met de Contains methode werken of je moet je eigen subclass van ArrayList maken die de Contains methode override.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 23:25

Janoz

Moderator Devschuur®

!litemod

In java kun je in dat geval gebruik maken van een specifieke comperator class. Deze wordt dan gebruikt voor de vergelijkingen ipv de eigen equal methoden. Kan zoiets ook in C#?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Ja daar heb je de Comparer class voor

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Ik dacht het implementeren van IComparable, maar dat is niet hetzelfde als Equals. Equals wordt gebruikt door .NET code intern, zoals IndexOf, Contains en Remove. IComparable.CompareTo is voor je eigen code. Het is inderdaad een oplossing voor TS: IComparable.CompareTo implementeren en dan loopen door de complete collection. Dat doet Contains trouwens ook, dus je verliest niets. :)

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com

Pagina: 1