2010-09-03 91 views
5

var关键字在运行时或编译时获取类型?var关键字运行时或编译时间?

还是取决于?

+0

这已经在其他问题上进行了讨论,包括[C#'var'vs特定类型性能](http://stackoverflow.com/questions/356846/c-var-vs-specific-type-performance)和[ 动态(C#4)和var之间有什么区别? (http://stackoverflow.com/questions/961581/whats-the-difference-between-dynamicc-4-and-var)。 – 2010-09-03 03:57:51

+3

它不会显示在建议家伙。为此实现更好的算法。我不会说话。 – DarthVader 2010-09-03 04:00:37

+0

而我不是SO开发者,加上我没有投票结束。我添加了链接,以便人们可以去那里获取更多信息。 – 2010-09-03 04:05:41

回答

15

简单明了:编译时间

var不是一个类型。实际类型是在编译时计算出来的。

var变量也被称为Implicitly Typed Local Variables (C# Programming Guide)

+0

我一直在试图想出一个类型不会被知道直到运行时,这是可能的吗? – DarthVader 2010-09-03 03:52:36

+0

@user,no。如果编译器无法确定类型,编译将失败。 – 2010-09-03 03:58:39

+2

您应该在C#4.0中检查新的'dynamic'关键字。 http://msdn.microsoft.com/en-us/library/dd264736.aspx – 2010-09-03 03:58:48

4

变种类型得到的compile time

变种是一个隐式类型的局部变量是强类型的,就好像你已经自己声明的类型,但是编译器决定为

var i = 10; // implicitly typed 
int i = 10; //explicitly typed 

http://msdn.microsoft.com/en-us/library/bb383973.aspx

+0

如果你打算从MSDN页面添加引号,你可以链接到它。 – 2010-09-03 03:52:26

1

var keyword被隐式类型。这意味着它是强类型的,但编译器确定类型。