【发布时间】:2010-12-06 17:12:43
【问题描述】:
所以我知道Find() 只是List<T> 方法,而First() 是任何IEnumerable<T> 的扩展。我也知道First() 会在没有参数传递的情况下返回第一个元素,而Find() 会抛出异常。最后,我知道First()会在找不到元素时抛出异常,而Find()会返回类型的默认值。
我希望这可以消除我对实际问题的困惑。这是一个计算机科学问题,在计算级别处理这些方法。我开始明白IEnumerable<T> 扩展并不总是像人们期望的那样运行。所以这里是 Q,我的意思是从“接近金属”的角度来看:Find() 和 First() 之间有什么区别?
这里有一些代码可以为这个问题提供基本假设。
var l = new List<int> { 1, 2, 3, 4, 5 };
var x = l.First(i => i == 3);
var y = l.Find(i => i == 3);
First() 和 Find() 如何在上面的代码中发现它们的值之间是否存在任何实际的计算差异?
注意:让我们暂时忽略 AsParallel() 和 AsQueryable() 之类的内容。
【问题讨论】:
-
First() 将创建一个枚举器,Find() 不会。