我明白这有点微不足道但......
如果存在,那么获取引用的最佳方法是什么?假设集合包含引用类型的项.
代码示例1:
if (collection.Any())
{
var firstItem = collection.First();
// add logic here
}
Run Code Online (Sandbox Code Playgroud)
上面的示例在集合上有两个单独的调用,开始迭代,一旦检测到第一个就完成.
代码示例2:
var firstItem = collection.FirstOrDefault();
if (firstItem != null)
{
// add logic here
}
Run Code Online (Sandbox Code Playgroud)
上面的示例只对集合进行了一次调用,但引入了一个不必要地在更广范围内的变量.
是否存在与此方案相关的最佳实践?有更好的解决方案吗?
我更喜欢第二个例子,因为它在一般情况下更有效.这个集合可能是许多不同的延迟评估LINQ查询的组合,因此即使获得第一个元素也需要非常重要的工作量.
例如,假设此集合是从以下LINQ查询构建的
var collection = originalList.OrderBy(someComparingFunc);
Run Code Online (Sandbox Code Playgroud)
只获取第一个元素collection需要完整的内容originalList.每次collection评估元素时都会发生这种完整排序.
第一个样本导致可能昂贵的集合被评估两次:通过Any和First方法.第二个样本只评估一次集合,因此我会在第一个样本中选择它.
| 归档时间: |
|
| 查看次数: |
740 次 |
| 最近记录: |