【发布时间】:2010-09-13 11:53:47
【问题描述】:
我想知道 FirstOrDefault 扩展方法是如何工作的?它遵循以下哪一种算法?
用途:
var arr = new[] {1, 2, 3, 4, 5, 6, 7};
return arr.FirstOrDefault(x => x%2 == 0);
算法一:
for(int i = 0; i < arr.Length; i++)
{
if(arr[i] % 2 == 0)
return arr[i];
}
return 0;
算法2:
var list = new List<int>();
for(int i = 0; i < arr.Length; i++)
{
if(arr[i] % 2 == 0)
list.Add(arr[i]);
}
return list.Count == 0 ? 0 : list[0];
FirstOrDefault 算法是否足够聪明,可以选择最佳算法,还是严格遵循这些算法中的任何一种?
【问题讨论】:
-
概念上是第一个,但实际实现不同
标签: c# .net extension-methods ienumerable