我有一个类似这样的东西:
public class MyClass
{
public string Type { get; set; }
public int Value { get; set; }
}
然后我有:
List<MyClass> myList = new List<MyClass>()
// ... Populate myList
if (myList.Contains("testType"))
{
// Do something
}
在上面的代码中,我希望
myList.Contains()
匹配Type属性而不是MyClass对象引用。我该如何实现?我需要使用IComparable
或ICompare
接口吗?还是重写MyClass.Equals()
?或者仅仅重写MyClass的字符串转换就足够了?编辑:在尝试重写
Equals()
和MyClass
的字符串转换、实现ICompare
和IComparable
后,我发现这些方法都不起作用。实际上,似乎只有当我重写MyClass
的字符串转换时才能生效,例如myList.Contains((MyClass)"testType")
。不过,我认为我更喜欢The Scrum Meister的答案 :)
Dictionary<string, MyClass>
。 - Ozzah