2010-12-13 69 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。