使用var对C#中显式类型有什么优势?
可能重复:
var关键字有什么意义?
在C#中使用var关键字
我明白IEnumerable<...>
对于一个数据类型如何使得代码可读性差一点,或者嵌套泛型如何看起来有点让人望而生畏。 但是除了代码可读性之外,使用var而不是显式类型有什么优势? 这似乎是通过使用显式类型,你最好传达变量的能力,因为你知道它是什么。
如果这是一个职场编码标准,我会为了团队合作而使用它。 然而,在我自己的项目中,我更愿意避免var的用户。
var的要点是允许匿名类型,没有它就不可能,这就是它存在的原因。 我认为所有其他用途都是惰性编码。
使用var
作为foreach块的迭代器变量比显式类型名称更安全。 例如
class Item {
public string Name;
}
foreach ( Item x in col ) {
Console.WriteLine(x.Name);
}
这段代码可以在没有警告的情况下编译,并且仍然会导致运行时抛出错 这是因为foreach循环与IEnumerable
和IEnumerable<T>
。 前者返回键入为object
值,而C#编译器只是将其转换为引擎盖下的Item
。 因此它是不安全的并且可能导致运行时错误,因为IEnumerable
可以包含任何类型的对象。
另一方面,下面的代码只会执行以下任一操作
x
被键入object
或另一个没有名称字段/属性的类型 类型“X”的将object
中的情况下IEnumerable
和T
在的情况下IEnumerable<T>
编译器不会执行转换。
foreach ( var x in col ) {
Console.WriteLine(x.Name);
}
我喜欢它,特别是在单元测试中,因为随着代码的发展,我只需要修正声明/赋值的右边。 显然,我也必须更新以反映使用情况的变化,但在声明的时候,我只需要做出一些改变。
链接地址: http://www.djcxy.com/p/53803.html上一篇: What advantages does using var have over the explicit type in C#?
下一篇: C# var keyword usage