【问题标题】:var versus concrete type usage [duplicate]var 与具体类型的用法[重复]
【发布时间】:2013-12-21 21:57:57
【问题描述】:

我已经在 stackoverflow 中查看了 5 篇或更多关于 var 使用的帖子,但我仍在寻找关于 var 使用的答案。我习惯使用 Concrete 类型而不是 var,但我的 Resharper 抱怨要更改为 var。 var 是一种类型的选择 - 即使具体类型已知?

【问题讨论】:

  • 您可以将 ReSharper 配置为仅对此提出建议。但是,顺便说一句,ReSharper 永远是对的。
  • 在节省硬盘空间和击键方面var比较好。但我不知道 var 为编译器节省了多少时间。

标签: c# var


【解决方案1】:

以下是msdn的摘录...

当变量的特定类型在键盘上输入起来很乏味,或者很明显,或者不增加代码的可读性时,var 关键字也很有用。 var 以这种方式有帮助的一个示例是嵌套泛型类型,例如与组操作一起使用的泛型类型。在以下查询中,查询变量的类型为 IEnumerable>。只要你和其他必须维护你的代码的人理解这一点,为了方便和简洁使用隐式类型是没有问题的。

然而,使用 var 至少有可能使其他开发人员更难以理解您的代码。因此,C# 文档通常仅在需要时才使用 var。

参考:http://msdn.microsoft.com/en-us/library/bb384061.aspx

祝你好运!

【讨论】:

    【解决方案2】:

    当类型很明显时我更喜欢使用var以提高可读性:

    var myVariable = new List<string>();
    var myVariable2 = (int) someOtherVariable;
    

    如果类型不明显,我会明确指定。例如方法的返回值:

    int myVariable3 = GetSomeValue();
    

    【讨论】:

      【解决方案3】:

      来自

      var (C# Reference)

      从 Visual C# 3.0 开始,在方法范围内声明的变量可以具有隐式类型 var。隐式类型的局部变量是强类型的,就像您自己声明了类型一样,但编译器确定类型。以下两个 i 的声明在功能上是等价的:

      var i = 10; // implicitly typed
      int i = 10; //explicitly typed
      

      我认为对你来说重要的部分是

      一个隐式类型的局部变量是强类型的,就像你 自己声明了类型,但是编译器决定了类型。

      更进一步,来自Implicitly Typed Local Variables (C# Programming Guide)

      可以给局部变量一个推断的“类型” var 而不是 显式类型。 var 关键字指示编译器推断 右侧表达式中的变量类型 初始化语句。推断的类型可能是内置类型, 匿名类型、用户定义的类型或在 .NET 中定义的类型 框架类库。 重要的是要理解 var 关键字并不意味着“变体”,也不表示该变量是松散类型的,或者 迟到。它只是意味着编译器确定并分配 最合适的类型。

      【讨论】:

        猜你喜欢
        • 2017-03-26
        • 2016-10-26
        • 2014-12-31
        • 1970-01-01
        • 1970-01-01
        • 2020-02-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多