为什么使用var而不是类名?

Lia*_*roy 8 c# variables var

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

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

var smtp = new SmtpClient();

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

SmtpClient smtp = new SmtpClient();

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

Tig*_*ran 19

不,这不是关于效率,而是关于代码编写风格.

考虑到它是关于一种风格,这条规则不能总是应用.

浏览snipplet后的immagine:

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

简而言之,选择适当的写作方式.

  • 如果你不能告诉它的名字返回什么函数,它就是一个命名不好的函数. (3认同)
  • @MatějZábský:在一个完美的世界里,我会同意你的意见,但在真实办公室编码我总是**遇到错误的命名函数,变量,没有注释代码,没有经过测试的代码......无论如何.你无法设计一个框架来满足完美世界的需求.. (2认同)

Dav*_*son 19

想象一下.

Dictionary<Dictionary<String, String>, String> items = new Dictionary<Dictionary<String, String>, String>();
Run Code Online (Sandbox Code Playgroud)

var 对这样的事情很有用.

var items = new Dictionary<Dictionary<String, String>, String>();
Run Code Online (Sandbox Code Playgroud)

更简单.关键点与C++ 11 var相同auto,编译器知道类型,为什么我们必须重复自己.我个人var很少使用,但仅限于长篇宣言.这只是语法糖.


Oma*_*mar 5

不,这并没有更有效率。这与显式写入类型是一样的。事实上,编写变量的类型而不是使用变量的类型是很好的编程方式,var因为它使代码更具可读性。

所以:

var smtp = new SmtpClient();
Run Code Online (Sandbox Code Playgroud)

和:

SmtpClient smtp = new SmtpClient();
Run Code Online (Sandbox Code Playgroud)

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