나는이 (가) LINQ와 함께 다음과 같은 것을 할 경우 : HashSet
에 최적화 된 구현LINQ는 입력 유형에 따라 특수화 된/최적화 된 기능 버전을 사용합니까?
void DoSomeStuffWithHashSet()
{
HashSet<int> set = new HashSet<int>();
for (int i = 0; i < 100; ++i) set.Add(i);
if (Lookup(set, new Random().NextInt(200))
System.Console.WriteLine("Yey");
else
System.Console.WriteLine("Ney");
}
bool Lookup(IEnumerable<int> haystack, int needle)
{
// O(N) search or HashSet<int>.Contains()?
return Enumerable.Contains(collection, needle);
}
윌 Enumerable.Contains()
결의를하거나 간단한 검색에 관계없이 입력을 수행 할 것인가?
아, 나는 그것을 놓쳤습니다. – larsmoa
이것은 동일한 비교자를 사용하지 않고 'Contains'를 의미하는 것은 키 유형에 대한 기본 동등 비교자를 사용하여 'Contains'를 호출하는 것과 같지 않습니다. 그것은 API, IMO의 혼란스러운 비트입니다. –