【问题标题】: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 而不是实际的变量类型?我错过了什么吗?

【问题讨论】:

标签: c# variables var


【解决方案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。
    猜你喜欢
    • 2011-06-19
    • 2019-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    • 2018-03-22
    • 2018-08-31
    • 1970-01-01
    相关资源
    最近更新 更多