任何人都可以简单地解释下面两个陈述之间的区别,以及我何时应该使用另一个陈述?
例如,我有一个Person类,并希望在另一个类中实例化Person类
Person person = new Person();
var person = new Person();
答案 0 :(得分:2)
两者都编译为相同的MSIL代码。唯一的区别是在编写源代码时可能会有一些方便 - 如果您决定稍后更改p
的类型,则只需在构造函数调用中替换Person
一次,您就可以离开使用var
时变量声明完整。
也就是说,var
伴随着易读性的轻微下降,因为您不能在行的开头立即看到p
的类型。因此,将var
的使用限制在真正节省一些输入的场合,例如复杂的嵌套泛型类型。
请注意,如果您不立即初始化变量(在声明变量的同一语句中),则不能使用var
,因为编译器无法推断出类型变量。
答案 1 :(得分:2)
没有区别,它只是一个语法糖:
...隐式类型的局部变量是强类型的,就像你自己声明了类型一样,但编译器确定了类型...
答案 2 :(得分:1)
请参考this doc
第一个是显式声明,第二个是隐式声明(编译器将决定对象)。否则它们是等价的。
答案 3 :(得分:0)
这里没有区别。 var
在编译期间在Person
中翻译。我通常使用var
来更快地重构代码,我的意思是,如果您决定更改p
的类型,则只需更改右侧并让var
。