1

谁能简要解释以下两种陈述之间的区别,以及我何时应该使用其中一种?

例如,我有一个 Person 类,想在另一个类中实例化 Person 类

Person person = new Person();

var person = new Person();
4

4 回答 4

2

两者都编译为相同的 MSIL 代码。唯一的区别是在编写源代码时为您提供了可能的便利——如果您决定p稍后更改 的类型,您只需Person在构造函数调用中替换一次,并且可以在使用时保持变量声明不变var

也就是说,var易读性略有下降,因为您无法p在行首立即看到类型。因此,将您的使用限制var在它真正节省一些类型的场合,例如复杂的嵌套泛型类型。

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

于 2013-07-31T10:26:55.413 回答
2

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

…隐式类型的局部变量是强类型的,就像你自己声明了类型一样,但是编译器决定了类型…</p>

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

于 2013-07-31T10:27:56.927 回答
1

请参考此文档

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

于 2013-07-31T10:27:10.867 回答
0

这里没有区别。在编译期间var被翻译。Person我通常var用来使代码的重构更快,我的意思是如果你决定改变 的类型p,你可以简单地改变右边和 let var

于 2013-07-31T10:26:42.193 回答