为什么我不能将匿名类型作为参数传递给函数?

Abe*_*ler 4 .net linq anonymous-types

我试图做下面的事情,但它不起作用.为什么.NET不允许我这样做?

private void MyFunction(var items)
{
 //whatever
}
Run Code Online (Sandbox Code Playgroud)

Nat*_*ate 7

从Visual C#3.0开始,在方法范围声明的变量可以具有隐式类型var.隐式类型的局部变量是强类型的,就像您自己声明了类型一样,但编译器确定了类型.以下两个i声明在功能上是等效的:

var i = 10; // implicitly typed
int i = 10; //explicitly typed
Run Code Online (Sandbox Code Playgroud)

换句话说,var关键字仅允许用于本地范围的变量.

来源.

这里有一点信息.基本上,在使用时,var您还必须将变量初始化为同一行上的值,以便编译器知道它是什么类型.