lar*_*moa 4 c# linq collections
如果我使用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);
}
Run Code Online (Sandbox Code Playgroud)
将Enumerable.Contains()解析为优化的实现,HashSet或者无论输入如何都将执行简单的搜索?
是的,它会使用HashSet<T>.Contains.HashSet<T>实现ICollection<T>和根据以下文档Enumerable.Contains:
如果源类型实现
ICollection<T>,Contains则调用该实现中的方法以获取结果.否则,此方法确定source是否包含指定的元素.
总是,总是,总是检查文档!