【发布时间】:2012-03-05 02:14:54
【问题描述】:
我有一个汽车对象列表
List<Car> cars = GetMyListOfCars();
我想看看列表中是否有汽车
if (cars.Contains(myCar))
{
}
Contains 使用什么来确定 myCar 是否在列表中。它是否在我的汽车对象上执行“ToString()”。是否使用 Equals() 方法,gethashcode()?
我知道我可以传入我自己的 IEqualityComparer 来强制我自己的实现,但只是想了解它默认的作用。
【问题讨论】:
-
ToString 在没有被覆盖时返回类型的名称,因此它不是比较项目的好方法:)
-
顺便说一句,您不能将自己的
IEqualityComparer<T>传递给List<T>.Contains方法。您可以将您自己的比较器传递给 LINQ 的Contains扩展方法,该方法与List<T>非常有效。
标签: c# .net list collections contains