为啥使用 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()
,myVar
的type是什么?
从代码风格的角度来看,这样写不是很清楚,也不是很好。
简而言之,巧妙地选择合适的写作方式。
【讨论】:
有道理,谢谢 如果你不能从它的名字中分辨出返回了什么函数,那就是一个命名错误的函数。 @MatějZábský:在一个完美的世界里我会同意你的观点,但是在真实的办公室中编码我总是遇到错误的命名函数、变量、没有注释的代码、没有经过测试的代码..任何。你不能设计一个框架来满足完美世界的需求.. @Tigran 当然,我也使用特定的类型声明,其中 var 由于某种原因不够清晰,但总的来说,我更喜欢 var。你得到了我的 +1。以上是关于为啥使用 var 而不是类名? [复制]的主要内容,如果未能解决你的问题,请参考以下文章