webForumDet fria alternativet

Generisk lista av objekt och metoden Contains

.NET

1 svar · 455 visningar · startad av Lukaspojken

Medlem sedan maj 20011 312 inlägg
Frågan#1

Jag skrev ihop ett snabbt exempel för att illustrera problemet jag har. Jag vill alltså inte att dubbletter av person-objektet läggs in i listan. Hur löser man detta på ett smart sätt? Finns det någon metod man kan använda sig av för att jämföra om två objekt är identiska eller måste man skriva en egen? Jo, en sak till, jag vill undvika att använda dictonary om det går.

Dim persons As New List(Of Person)
Dim o as new Person
o.FirstName = "Nisse"
o.LastName = "Nilsson"
etc.

persons.Add(o)

Dim o2 as new Person
o.name = "Nisse"
o.LastName = "Nilsson"
etc.

If Not persons.Contains(o2) Then
    persons.Add(o2)
End if
Medlem sedan juni 20008 205 inlägg
#2

Läsa dokumentationen? ;)

MSDN skrev:

Methods such as Contains, IndexOf, LastIndexOf, and Remove use an equality comparer for the list elements. The default equality comparer for type T is determined as follows. If type T implements the IEquatable generic interface, then the equality comparer is the Equals method of that interface; otherwise, the default equality comparer is Object.Equals.

Alltså, implementera Equals i Person, exempelvis.

252 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)