我的代码有什么区别?
这个问题在这里已经有了答案:
正如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>()
上一篇: What is the difference between my codes?
下一篇: implicit type var