C#中Var类型和对象类型的区别

时间:2013-07-31 10:24:26

标签: c#

任何人都可以简单地解释下面两个陈述之间的区别,以及我何时应该使用另一个陈述?

例如,我有一个Person类,并希望在另一个类中实例化Person类

Person person = new Person();

var person = new Person();

4 个答案:

答案 0 :(得分:2)

两者都编译为相同的MSIL代码。唯一的区别是在编写源代码时可能会有一些方便 - 如果您决定稍后更改p的类型,则只需在构造函数调用中替换Person一次,您就可以离开使用var时变量声明完整。

也就是说,var伴随着易读性的轻微下降,因为您不能在行的开头立即看到p的类型。因此,将var的使用限制在真正节省一些输入的场合,例如复杂的嵌套泛型类型。

请注意,如果您立即初始化变量(在声明变量的同一语句中),则不能使用var,因为编译器无法推断出类型变量。

答案 1 :(得分:2)

没有区别,它只是一个语法糖

...隐式类型的局部变量是强类型的,就像你自己声明了类型一样,但编译器确定了类型...

http://msdn.microsoft.com/library/bb383973.aspx

答案 2 :(得分:1)

请参考this doc

第一个是显式声明,第二个是隐式声明(编译器将决定对象)。否则它们是等价的。

答案 3 :(得分:0)

这里没有区别。 var在编译期间在Person中翻译。我通常使用var来更快地重构代码,我的意思是,如果您决定更改p的类型,则只需更改右侧并让var