2012-05-13 24 views
7

可能重复:
What's the point of the var keyword?
What advantages does using var have over the explicit type in C#?为什么使用var而不是类名?

我总是看到别人产生类似的代码:

VAR SMTP =新SmtpClient();

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

SmtpClient SMTP =新SmtpClient();

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

+1

可能的重复[使用var有什么优势超过显式类型在C#?](http://stackoverflow.com/questions/3425966/what-advantages-does-using-var-have-over-the-显式类型在C)另请参见[C#'VAR'与特定类型的性能](http://stackoverflow.com/questions/356846/c-sharp-var-vs-specific-type-performance) –

+0

@MattBall大声笑和**这是**一个重复也 –

回答

16

想象一下。

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

var对于这样的事情很有用。

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

简单得多。在C++ 11中,varauto相同,编译器知道类型,所以为什么我们必须重复这么多。我个人很少使用var,但仅限于长时间声明。这只是语法糖。

+0

我会defintalley开始更频繁地使用 –

15

不,这不是关于效率,只是关于代码编写风格。

考虑到它的风格,此规则不能应用总是

想象,下面snipplet:

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

总之,选择适当的写作方式是一种聪明的做法。

+0

这很有道理,谢谢 –

+1

如果你不知道哪个函数返回它的名字,这是一个命名不正确的函数。 –

+1

@MatějZábský:在一个完美的世界里,我会同意你的观点,但是在真实的办公室编码我**总是**遇到不好的命名函数,变量,没有评论的代码,没有经过测试的代码..什么。你不能设计一个框架来适应完美世界的需求。 – Tigran

1

它的语法糖:

var smtp = new SmtpClient(); 

等于:

SmtpClient smtp = new SmtpClient(); 

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

1

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

所以:

var smtp = new SmtpClient(); 

和:

SmtpClient smtp = new SmtpClient(); 

是同样的事情在两种不同的方式写。

相关问题