【问题标题】:C# var keyword usage [duplicate]C# var 关键字用法[重复]
【发布时间】:2010-11-15 08:59:46
【问题描述】:

可能的重复:
What to use: var or object name type?
Use of var keyword in C#
What’s the point of the var keyword?
Should I always favour implictly typed local variables in C# 3.0?

我刚刚安装了 ReSharper 的试用版,以便为我的公司评估它。我注意到的一件事是它建议我更改以下内容(虚构示例):

string s = "";

var s = "";

在声明变量时使用 var 关键字而不是使用 Object Type 是最佳实践吗?它有什么好处。就上下文而言,我是一名前 Java 开发人员,刚刚过渡到 .Net 作品。

【问题讨论】:

标签: c# styles


【解决方案1】:

我发现它在某些类型声明很长的情况下很有用,例如:

Dictionary<int, string> item = new Dictionary<int, string>();

变成

var item = new Dictionary<int, string>();

【讨论】:

    【解决方案2】:

    这相当于同一件事,因为使用 var 关键字,变量是隐式类型的,编译器会在构建时推断类型。在大多数情况下,我更喜欢指定类型而不是使用 var,因此我更改了我的 resharper 设置。

    【讨论】:

    • -1:提问者是怎么做的,并且想知道决定哪条下落的依据。
    • 我不认为我的回答是无用的,但值得一票否决
    • 好的,取消投票 - 似乎其他人也有类似的看法(或者他们是否试图反驳我的“肮脏”?我当时给了它 -1 来对抗一个 +1 - 我相信不会增加太多的答案,只要它们保持在零,并且不会花费更长的时间才能得到一个实际上有深刻见解的答案。IOW stackoverflow.com/questions/1205329/c-var-keyword-usage/… 有我的 + 是有原因的1 和其他人也是。
    • 就我个人而言,我只会否决错误或误导性的答案,但这取决于你。无论如何,问题是关于最佳实践,因此答案将是主观的。我说在大多数情况下我更喜欢显式类型变量。正如 codespeaker 所说,当类型声明很长时它看起来会更整洁,在这种情况下我可能会使用 var 来提高可读性。
    • 我的意思是,在一个“最佳实践”问题上,答案实际上是“取决于”,说是或否是不够的 - 它需要是“我总是选择 Y/ N 因为 ....[,尽管我知道有些人说 ... - 我不同意,因为 ...”。不过,Resharper 设置点在这种情况下是一个独特且有用的点……。我实际上会在成熟的反思的基础上翻转并在此基础上 +1!
    【解决方案3】:

    我记得 Resharper 只是说它可以这样写。它并没有说你应该。

    很多建议只是我第一次看到它们时转过来的建议。这就是其中之一。

    另一个是它说写“this.someProperty”是多余的,而我认为这样做会使代码更容易阅读。

    【讨论】:

      【解决方案4】:

      Resharper 还建议将 if 语句转换为真或假。 几乎相同的东西,但这取决于你的编码风格。 因此,当您发现使用 var 更舒服时,请使用此建议。

      【讨论】:

        【解决方案5】:

        我认为使用var 可以使代码更易于阅读,这对我来说意味着var 正在替换的类型必须完全显而易见。

        例如,这将是var 的一个很好的用法(人为的例子):

        var thing = new Dictionary<int, KeyValuePair<string, int>>();
        

        但是,这将是对var 的错误使用:

        var thing = GetThingFromDatabase();
        

        【讨论】:

        • 重构怎么样:GetThingFromDatabase 返回例如 'Thing' 对象,所以你写: Thing thing = GetThingFromDatabase();而不是 var thing ...一段时间后,您决定将 Thing 对象转换为接口,并且您必须在任何地方将 Thing 更改为 IThing )恭喜!我想看看当 GetThingFromDatabase 返回一些令人兴奋的 linq 时你将如何实现案例;)
        猜你喜欢
        • 2013-04-19
        • 2011-04-03
        • 1970-01-01
        • 2010-11-11
        • 2013-09-04
        • 2011-01-29
        • 2010-10-27
        • 2011-09-30
        • 2011-10-17
        相关资源
        最近更新 更多