mam coś takiego:C# Użycie obiektu zamiast odniesienia dla List.Contains()
public class MyClass
{
public string Type { get; set; }
public int Value { get; set; }
}
a potem mam:
List<MyClass> myList = new List<MyClass>()
// ... Populate myList
if (myList.Contains("testType"))
{
// Do something
}
W powyższym kodzie, chcę myList.Contains()
dopasować we właściwości Type zamiast odwołania do obiektu MyClass. Jak to osiągnąć? Czy używam interfejsu IComparable
lub ICompare
, czy mogę przesłonić MyClass.Equals()
, czy też wystarczy, aby nadpisać ciąg od MyClass?
Edycja: Po wykonaniu kilku testów z nadrzędnymi Equals()
i obsady ciąg MyClass
, wykonawcze ICompare
i IComparable
, odkryłem, że żadna z tych metod nie działa. Właściwie wygląda na to, że zadziała, jeślibym zastąpił obsadkę w postaci MyClass
, coś w rodzaju myList.Contains((MyClass)"testType")
. Jednak myślę, że chciałbym odpowiedzieć na Scrum Meister jest lepiej :)
hhmmm ... zdecydowanie prostsze niż ja;) PS: – IAbstract
upewnij się, że dodajesz przy użyciu System.Linq; na górze pliku .cs - to potknęło mnie kilka razy :-) –
Bardzo elegancki. To z pewnością trafi do mojej biblioteki kodów fragmentów kodu. Rzeczywiście uświadomiłem sobie, po opublikowaniu pytanie, że moje ciągi Type muszą być unikatowe na całej mojej liście, więc w końcu użyłem 'Dictionary' zamiast. –
Ozzah