是否有可能,如果是这样我怎么重写Contains其他正常的方法List<T>,在这里T是我自己的,自定义类型?
List<T>用EqualityComparer<T>.Default做比较; 这首先检查你的对象是否实现IEquatable<T>; 否则是用途object.Equals.
所以; 最简单的方法是覆盖Equals(始终更新GetHashCode以匹配逻辑Equals).或者,使用LINQ代替:
bool hasValue = list.Any(x => x.Foo == someValue);
Run Code Online (Sandbox Code Playgroud)
要创建自己的Contains实现,您可以创建一个实现IList接口的类.这样你的课就会像IList一样.你可以在内部有一个真正的List来做标准的东西.
class MyTypeList : IList<MyType>
{
private List<MyType> internalList = new ...;
public bool Contains(MyType instance)
{
}
....
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9659 次 |
| 最近记录: |