2010-12-13 135 views
3

在C#中,我有:C#列表<MyObj> Remove方法

public class MyObj 
{ 
// methods and properties etc. 
} 

List<MyObj> listOfObjects = new List<MyObj>(); 

listOfObjects.Remove(certainObj); 

我想知道怎么做C#知道certainObj在列表...是否在定位certainObj的过程中使用的equals()在列表中?

+2

为什么不使用反射器? – 2010-12-13 19:01:13

回答

4

是的,它使用MyObjEquals(...)方法,如果方法没有被覆盖,默认引用相等。

更具体地说,它使用EqualityComparer<T>.Default,其依次看起来是否MyObj实现IEquatable<T>。否则,它将使用myObj.Equals(object obj)过载,如果未覆盖,则会调用Object.ReferenceEquals(...)

0

参见http://msdn.microsoft.com/en-us/library/cd666k3e.aspx

此方法使用 默认的相等比较 EqualityComparer.Default为T,则 类型列表中的值的确定平等。

此方法执行线性搜索;因此,此方法是一个O(n) 操作,其中n是Count。