我想知道FirstOrDefault扩展方法是如何工作的?它遵循以下哪种算法?
使用:
var arr = new[] {1, 2, 3, 4, 5, 6, 7};
return arr.FirstOrDefault(x => x%2 == 0);
Run Code Online (Sandbox Code Playgroud)
算法1:
for(int i = 0; i < arr.Length; i++)
{
if(arr[i] % 2 == 0)
return arr[i];
}
return 0;
Run Code Online (Sandbox Code Playgroud)
算法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];
Run Code Online (Sandbox Code Playgroud)
FirstOrDefault算法是否足够智能以选择最佳算法或严格遵循这些算法中的任何一个算法?