13

可能重复:
var 关键字的意义何在?
与 C# 中的显式类型相比,使用 var 有什么优势?

我总是看到其他人生成如下代码:

var smtp = 新的 SmtpClient();

但是为什么在这种情况下使用var而不是呢?SmtpClient总是

SmtpClient smtp = new SmtpClient();

var更有效率吗?为什么使用var而不是实际的变量类型?我错过了什么吗?

4

4 回答 4

31

想象一下。

Dictionary<Dictionary<String, String>, String> items = new Dictionary<Dictionary<String, String>, String>();

var对这样的事情很有用。

var items = new Dictionary<Dictionary<String, String>, String>();

简单得多。的点与C++ 11var中的相同auto,编译器知道类型,所以我们为什么要如此重复自己。我个人var很少使用,但仅用于冗长的声明。这只是语法糖。

于 2012-05-13T14:59:29.393 回答
21

不,这与效率无关,仅与代码编写风格有关。

考虑到它是关于一种风格的,这个规则不能总是适用。

想象以下片段:

var myVar = Some3dPartFunction(), 是什么类型myVar?从代码风格的角度来看,以这种方式编写并不是很清楚,也不是很好。

总之,巧妙地选择合适的写作方式。

于 2012-05-13T14:56:03.137 回答
4

不,它不是更有效。明确地写类型是一样的。事实上,编写变量的类型而不是使用是好的编程,var因为它使代码更具可读性。

所以:

var smtp = new SmtpClient();

和:

SmtpClient smtp = new SmtpClient();

是同一件事用两种不同的方式写的。

于 2012-05-13T15:10:10.573 回答
3

它是语法糖:

var smtp = new SmtpClient(); 

等于:

SmtpClient smtp = new SmtpClient();

这是 C# 3.0 中的一项新功能,称为类型推断。

于 2012-05-13T15:06:56.657 回答