为啥使用 var 而不是类名? [复制]

Posted

技术标签:

【中文标题】为啥使用 var 而不是类名? [复制]【英文标题】:Why use var instead of the class name? [duplicate]为什么使用 var 而不是类名? [复制] 【发布时间】:2012-05-21 07:25:42 【问题描述】:

可能重复:What's the point of the var keyword?What advantages does using var have over the explicit type in C#?

我总是看到其他人编写如下代码:

var smtp = new SmtpClient();

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

SmtpClient smtp = new SmtpClient();

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

【问题讨论】:

What advantages does using var have over the explicit type in C#? 的可能副本另请参阅C# 'var' vs specific type performance @MattBall Lol 和 那是也是重复的 【参考方案1】:

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

所以:

var smtp = new SmtpClient();

还有:

SmtpClient smtp = new SmtpClient();

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

【讨论】:

【参考方案2】:

这是语法糖:

var smtp = new SmtpClient(); 

等于:

SmtpClient smtp = new SmtpClient();

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

【讨论】:

说得对。只是写作风格的区别是一样的。为了代码的清晰可读性,首选第一个。【参考方案3】:

想象一下。

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

var 对这类事情很有用。

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

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

【讨论】:

我肯定会开始更频繁地使用【参考方案4】:

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

考虑到它是关于一种样式,因此不能始终应用此规则。

想象以下片段:

var myVar = Some3dPartFunction()myVartype是什么? 从代码风格的角度来看,这样写不是很清楚,也不是很好。

简而言之,巧妙地选择合适的写作方式。

【讨论】:

有道理,谢谢 如果你不能从它的名字中分辨出返回了什么函数,那就是一个命名错误的函数。 @MatějZábský:在一个完美的世界里我会同意你的观点,但是在真实的办公室中编码我总是遇到错误的命名函数、变量、没有注释的代码、没有经过测试的代码..任何。你不能设计一个框架来满足完美世界的需求.. @Tigran 当然,我也使用特定的类型声明,其中 var 由于某种原因不够清晰,但总的来说,我更喜欢 var。你得到了我的 +1。

以上是关于为啥使用 var 而不是类名? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥我不能更改已定义元素的类名

为啥使用 .h1 而不是实际的 h1?

类名中的jQuery句点存储在var中

如何确定调用方法和类名? [复制]

js为啥根据id就可以找到容器里的子元素,而根据类名就找不到?

为啥 cypress 无法识别我们是不是给出完整的类名