C#List <myobj>删除方法</myobj>

时间:2010-12-13 18:59:43

标签: c# list

在C#中我有:

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

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

listOfObjects.Remove( certainObj ); 

我想知道C#如何知道CertainObj在列表中...它是否在列表中定位CertainObj的过程中使用Equals()?

3 个答案:

答案 0 :(得分:4)

是的,它使用Equals(...)的{​​{1}}方法,如果方法尚未被覆盖,则默认为引用相等。

更具体地说,它使用MyObjEqualityComparer<T>.Default反过来查看MyObj是否实现IEquatable<T>。如果没有,它将使用myObj.Equals(object obj)重载,如果不重写则会调用Object.ReferenceEquals(...)

答案 1 :(得分:0)

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

  

此方法使用确定相等性   默认的相等比较器   EqualityComparer.Default for T,the   列表中的值类型。

     

此方法执行线性搜索;   因此,这种方法是O(n)   操作,其中n是计数。

答案 2 :(得分:0)

是的,检查MSDN的List类,它在。通用列表上的.Contains对象上使用.Equals()方法。

http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx