C#编译器如何解释var关键字指定的对象?

mas*_*ani 3 c# types keyword

C#编译器如何解释var关键字指定的对象?我们何时必须使用此关键字?

Dav*_*kle 6

有时您需要使用var,例如,在使用匿名类型时,例如在LINQ查询中:

var results = context.People.Select(p => new {p.PersonID, p.Name});
Run Code Online (Sandbox Code Playgroud)

在那里看到新的{}行?那将返回一个在编译时生成的类.由于此类没有名称,因此在代码中引用它的唯一方法是使用"var".这减少了你必须为LINQ结果集创建吨和吨的特殊用途类.

在引擎盖下,无论你是将var用作另一种类型的简写,还是使用匿名类型,你仍然在进行静态的编译时类型检查.未使用动态类型.编译器按字面意思确定编译时应该是什么类型,所以程序如:

var i = 12;
i = i + "foo!";
Run Code Online (Sandbox Code Playgroud)

不会编译.