gpt4 book ai didi

c# - List.Contains() 如何找到匹配项?

转载 作者:可可西里 更新时间:2023-11-01 07:53:32 24 4
gpt4 key购买 nike

我有一个汽车对象列表

 List<Car> cars = GetMyListOfCars();

我想看看列表中是否有汽车

if (cars.Contains(myCar))
{
}

Contains 使用什么来确定 myCar 是否在列表中。它是否对我的汽车对象执行“ToString()”。它是否使用 Equals() 方法,即 gethashcode()?

我知道我可以传递我自己的 IEqualityComparer 来强制我自己的实现,但只是想了解它默认情况下的作用。

最佳答案

直接来自 MSDN - List<T>.Contains:

This method determines equality by using the default equality comparer, as defined by the object's implementation of the IEquatable(Of T).Equals method for T (the type of values in the list).

This method performs a linear search; therefore, this method is an O(n) operation, where n is Count.

所以最终还是要看T是如何实现IEquatable.Equals()的.对于大多数对象,这将是一个引用比较,除非被覆盖。内存中的相同位置是相同的对象。

关于c# - List<T>.Contains() 如何找到匹配项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9264566/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com