gpt4 book ai didi

c# - C#中var关键字的使用

转载 作者:IT王子 更新时间:2023-10-29 03:27:39 24 4
gpt4 key购买 nike

<分区>

在与同事讨论了 C# 3 中“var”关键字的使用后,我想知道人们对通过 var 正确使用类型推断有何看法?

例如,我在有问题的情况下懒惰地使用 var,例如:-

foreach(var item in someList) { // ... } // Type of 'item' not clear.
var something = someObject.SomeProperty; // Type of 'something' not clear.
var something = someMethod(); // Type of 'something' not clear.

var 的更多合法用法如下:-

var l = new List<string>(); // Obvious what l will be.
var s = new SomeClass(); // Obvious what s will be.

有趣的是,LINQ 似乎有点灰色地带,例如:-

var results = from r in dataContext.SomeTable
select r; // Not *entirely clear* what results will be here.

结果很明显,它将是一个实现 IEnumerable 的类型,但是它并不像 var 声明新对象的方式那样完全显而易见。

当涉及到对象的 LINQ 时,情况更糟,例如:-

var results = from item in someList
where item != 3
select item;

这并不比等效的 foreach(var item in someList) {//... } 更好。

这里确实存在类型安全问题 - 例如,如果我们将该查询的结果放入接受 IEnumerable 和 IEnumerable 的重载方法中,调用者可能会无意中传递错误的类型。

var 确实保持了强类型,但真正的问题是类型在定义时不立即显现是否危险,当重载意味着编译器错误时,这种情况会被放大当您无意中将错误的类型传递给方法时,可能不会发出。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com