leo*_*ora 14 .net c# collections contains list
我有一个汽车对象列表
List<Car> cars = GetMyListOfCars();
Run Code Online (Sandbox Code Playgroud)
我想知道一辆车是否在列表中
if (cars.Contains(myCar))
{
}
Run Code Online (Sandbox Code Playgroud)
包含什么用于确定myCar是否在列表中.它是否在我的汽车对象上执行"ToString()".它是否使用Equals()方法,gethashcode()?
我看到我可以通过我自己的IEqualityComparer来强制我自己的实现,但只是想了解它默认情况下的作用.
Yuc*_*uck 18
直接来自MSDN - 列出<T>.包含:
此方法通过使用默认的相等比较器来确定相等性,由对象的T的IEquatable(Of T).Equals方法的实现(列表中的值的类型)定义.
该方法执行线性搜索; 因此,该方法是O(n)操作,其中n是Count.
所以最终它取决于如何T实现IEquatable.Equals().对于大多数对象,这将是一个参考比较,除非重写.内存中的相同位置是同一个对象.
它使用Equals()
此方法通过使用默认的相等比较器来确定相等性,由对象的T的IEquatable(Of T).Equals方法的实现(列表中的值的类型)定义.
http://msdn.microsoft.com/en-us/library/bhkz42b3.aspx
| 归档时间: |
|
| 查看次数: |
11170 次 |
| 最近记录: |