使用Linq,范围变量(e)可以从它来自的数组/集合(emps)中隐式输入,但是如果没有var关键字或类型,foreach语句不能做同样的事情.为什么是这样?
在ex1中,编译器知道e是Employee类型,没有给出var关键字或任何东西.为什么ex2中的foreach循环不能做同样的事情,你必须提供类型(无论是var还是某种类型).
EX1.
Employee[] emps = {new Employee ( 1, "Daniel", "Cooley", 7, 57.98M };
public void SortByLastname()
{
var sortedByLastname =
from e in emps
orderby e.LastName
select e.FirstName;
}
Run Code Online (Sandbox Code Playgroud)
EX2.
foreach (Employee empl in emps)
{
Console.WriteLine("Employee " + empl);
}
Run Code Online (Sandbox Code Playgroud)
这可能是过度分析,但我试图找到原因的底部.
答案很可能是Linq查询语法被设置为自动推断范围变量的类型而foreach语句不是.有人可以帮助解释为什么会这样吗?
c# ×1