可能的重复:
var关键字的重点是什么?
在C#中使用var关键字
我理解IEnumerable<...>数据类型如何使代码的可读性降低或嵌套泛型看起来有点令人生畏.但除了代码可读性之外,使用var而不是显式类型是否有优势?看起来通过使用显式类型,您最好传达变量的功能,因为您知道它是什么.
如果它是工作场所编码标准,我会为了团队合作而使用它.然而,在我自己的项目中,我更愿意避免使用var.
Ben*_*son 18
var的目的是允许匿名类型,没有它就不可能,这就是它存在的原因.我认为所有其他用途都是懒惰的编码.
我喜欢它,特别是在单元测试中,因为随着代码的发展,我只需要修改声明/赋值的右侧.显然我还必须更新以反映使用的变化,但在声明时我只需要进行一次更改.
使用varforeach块作为迭代器变量比显式类型名称更安全.例如
class Item {
public string Name;
}
foreach ( Item x in col ) {
Console.WriteLine(x.Name);
}
Run Code Online (Sandbox Code Playgroud)
此代码可以在没有警告的情况下编译,但仍会导致运行时转换错误.这是因为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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15596 次 |
| 最近记录: |