我的代码有什么区别?

这个问题在这里已经有了答案:

  • 在C#86中使用var关键字的答案

  • 正如Brad Smith所建议的http://www.brad-smith.info/blog/archives/336: -

    似乎有一些程序员倾向于为每个变量声明使用var。 当然,这种语言不会阻止你这样做,而且MSDN确实承认这是一种“语法上的便利”......但它也强烈地警告说:

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

    隐式键入的局部变量(C#编程指南),MSDN

    我最近发现,常用的工具ReSharper实际上要求自由使用var。 坦率地说,这并不有助于这种情况。 有一些开发人员试图争论的立场是,var以某种方式提高了可读性和更广泛的编码实践,例如本文:

    通过使用var,你迫使自己更多地考虑如何命名方法和变量,而不是依靠类型系统来提高可读性,这更多的是实现细节。

    哈利哈里里提高了可读性

    我同意上面引用的前提,但不赞同最终结果。 相反,var的过度使用和误用会导致一些非常不好的习惯......

    让我们看看反对var的广泛使用的论点(以及它的节省,正确使用):

    隐式类型变量会失去描述性

    类型名称在局部变量声明中提供额外的描述层:

    // let's say we have a static method called GetContacts()
    // that returns System.Data.DataTable 
    var individuals = GetContacts(ContactTypes.Individuals); 
    
    // how is it clear to the reader that I can do this?  
    return individuals.Compute("MAX(Age)", String.Empty); 
    

    我上面的变量名是完全描述性的; 它区分使用GetContacts()填充的任何其他变量以及DataTable类型的其他变量。 当我对变量进行操作时,我知道这是我所指的个人联系人,而且我从它们得到的任何内容都将属于这种情况。 但是,如果没有在声明中指定类型名称,我将失去它提供的描述性......

     // a more descriptive declaration  
     DataTable individuals = GetContacts(ContactTypes.Individuals) 
    

    当我重新回顾这段代码时,我不仅会知道变量在概念上代表什么,而且还会在结构和用法方面表示它的代表性; 前一个例子中缺乏的东西。


    没有什么区别,通过输入var而不是你使用的数据类型,你可以让编译器自己查看并设置数据类型。 它使代码稍微短一些,但在我看来最好是写数据类型全名而不是var。


    它是一样的。 但唯一的区别是编译器决定了变量的类型。

    C#编译器如何知道变量的类型?

    C#编译器从右侧表达式推断变量的类型。 例如,对于该类型students从右手侧表达式的类型推断出new List<Student>()这使得students的类型的List<Student>()

    链接地址: http://www.djcxy.com/p/53823.html

    上一篇: What is the difference between my codes?

    下一篇: implicit type var