【问题标题】:Why should I use implicit types (var) when it is possible? [duplicate]为什么我应该在可能的情况下使用隐式类型 (var)? [复制]
【发布时间】:2012-09-16 15:53:05
【问题描述】:

可能重复:
Advantage of var keyword in C# 3.0

昨天我偶然发现了来自 MS 的建议,我应该尽可能使用 var:

http://msdn.microsoft.com/en-us/library/ff926074.aspx

我一直认为使用正确的类型有助于记录代码,也有助于在编译时发现错误。

这个推荐背后的原因是什么?

最好的 托马斯

【问题讨论】:

    标签: c# implicit-typing


    【解决方案1】:

    推荐有:

    Coding Convention - Implicitly Typed Local Variables

    当变量的类型为局部变量时使用隐式类型 从作业的右侧明显,或者当 类型不重要

    并非总是如此。

    还有:

    当类型从右侧不明显时,不要使用 var 任务。

    来自同一来源的示例:

    // When the type of a variable is not clear from the context, use an 
    // explicit type. 
    int var4 = ExampleClass.ResultSoFar();
    

    【讨论】:

      【解决方案2】:

      使用隐式类型并不意味着变量不是强类型的。这意味着编译器从语句的右侧暗示类型。

      var i = 1;
      

      i 定义为具有int 类型。和int i = 1;完全一样,但类型是隐含的。

      同样,下面的代码更容易阅读:

      var pairs = new List<pair<int, IEnumerable<string>>>();
      

      如果你必须输入:

      List<pair<int, IEnumerable<string>>> pairs = new List<pair<int, IEnumerable<string>>>();
      

      但结果却一模一样。

      【讨论】:

      • 谢谢,这意味着,由于类型是在编译时解析的,因此编译器将检测到变量的任何误用(例如,将其传递给具有其他类型的函数)。
      • 完全正确。编译器知道它是什么类型,你知道它是什么类型。使用 'implicit' 类型只是一个捷径。
      【解决方案3】:

      它是一种减少击键的语法糖。

      编译器通过计算 RHS 上的表达式来导出 LHS 上的变量类型。

      所以代码如下:

      var fStream = new FileStream("file", Filemode.Open);
      

      由编译器转换为:

      Filestream fstream = new FileStream("file", Filemode.Open);
      

      编译器对我们的一些输入非常友好。

      【讨论】:

        【解决方案4】:

        我的经验法则:

        你应该使用var 如果代码是通用的;即,如果将来类型发生变化,它是否可以正常工作。

        【讨论】:

          【解决方案5】:

          使用 var 不会影响您的性能,因为编译器会完成所有工作。 它比输入MyDatabaseModel model 更短。

          使用 var 的另一个原因是,您可以在右侧看到它是哪种类型。

          使用它的最后一个原因是匿名类型(只要您不知道类型)。

          【讨论】:

            猜你喜欢
            • 2011-06-19
            • 1970-01-01
            • 1970-01-01
            • 2023-03-16
            • 1970-01-01
            • 2011-02-20
            • 1970-01-01
            • 2012-01-29
            • 2012-07-22
            相关资源
            最近更新 更多