我想知道FirstOrDefault擴展方法是如何工作的?它遵循以下哪種算法?FirstOrDefault擴展方法如何工作?
用途:
var arr = new[] {1, 2, 3, 4, 5, 6, 7};
return arr.FirstOrDefault(x => x%2 == 0);
算法1:
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算法是足夠聰明,選擇最佳的一個,或者遵循任何的這些算法之一?
看看反射器。 – 2010-09-13 11:57:56
概念上第一個雖然實際實現是不同的 – 2010-09-13 12:09:10