使用这样的LINQ时:
collection.Select (...);
Run Code Online (Sandbox Code Playgroud)
是否更好地说:
var result = ...
Run Code Online (Sandbox Code Playgroud)
要么:
IEnumerable<Point3> result = ...
Run Code Online (Sandbox Code Playgroud)
我问它,因为它总是IEnumerable,对吧?在这种情况下更明确是否更好?
这真的取决于具体细节.如果从代码的其余部分清楚地看出变量是什么类型,或者更重要的是,如果知道它究竟是什么类型并不重要,那么它就var很有用.但是,如果类型声明确保您的代码更易于维护且更易于阅读,那么请更具体并提供类型.
例如,如果你的查询后面紧跟一个循环结果并且显式地键入了该循环,var那么这是一个合理的选择,因为它节省了输入的时间,并且不会将代码混淆到维护更难的点,例如如:
// uses var instead of IEnumerable<Size>
var items = from item in myItems select item.Size;
foreach (Size size in items)
{
RecalculateLayout(size);
}
Run Code Online (Sandbox Code Playgroud)
实际上,在刚刚显示的示例中,甚至Size可以替换var为代码仍然可以合理地维护,因为方法调用的类型就足够了.
但是,如果预期查询返回单个值,然后在算术运算中使用,则应该使用显式类型化结果,如:
// using var here means you can't properly interpret
// the intention for the following line or where an error
// lies if something changes to say, use double instead of int.
int offset = myItems.First().Offset;
myConvertedValue = originalValue + offset;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
243 次 |
| 最近记录: |