ObjectQuery和“var”有什么区别?

时间:2009-06-21 14:00:32

标签: c# asp.net linq entity-framework

请看下面两种代码之间的区别。是否有任何性能差异或其他什么?

第一个代码



                ObjectQuery departmans = staffContext.Departman;
                GridView1.DataSource = departmans;
                GridView1.DataBind();

Second Codes

var departmans = staffContext.Departman;
   GridView1.DataSource = departmans;
                GridView1.DataBind();

由于

3 个答案:

答案 0 :(得分:4)

输出代码的有效差异取决于Departman的类型。如果Departman的类型是ObjectQuery,则代码是等效的。

“var”关键字只是告诉编译器,请将此变量的类型设置为与分配给它的表达式相同的类型。在这种情况下,它是Departman的类型。

答案 1 :(得分:2)

没有区别(假设staffContext.Departman的类型是ObjectQuery而不是ObjectQuery的某个子类)。编译器只根据赋值的右侧推断出类型。

答案 2 :(得分:1)

var关键字表示的类型必须在编译时知道,因此只要在两种情况下类型实际相同,可执行代码都是相同的。

根据右侧的类型推断类型,因此在某些情况下,您需要指定类型以获得所需的结果。例如:

Stream s = File.OpenRead(fileName);

这当然会为您提供Stream类型的变量。另一方面:

var s = File.OpenRead(fileName);

这将为您提供FileStream类型的变量。

作为一般规则,如果右侧的类型不明显,则根本不应使用var关键字。