【问题标题】:Erroneous Resharper multiple enumeration warning?错误的 Resharper 多重枚举警告?
【发布时间】:2014-05-22 19:20:27
【问题描述】:

这段代码:

IEnumerable<IEnumerable<int>> numbas = new[] {new[] {0, 1}, new[] {2}, new[] {3, 4, 5}};
var flattened = numbas.SelectMany(a => a);

从多个来源中提取一个扁平化的可枚举数字列表。 Resharper 警告说,a(第二个)可能会被多次枚举——但这很愚蠢;每个源仅被枚举一次。是的,符号a会被枚举多次,但每次都会有不同的来源。

我是否遗漏了什么,或者这是来自 Resharper 的错误警告?

【问题讨论】:

    标签: resharper ienumerable


    【解决方案1】:

    是的,这是一个错误的警告。看一下SelectMany的实现可以看看——嵌套元素只有一个枚举:

    foreach (TSource element in source) {
        foreach (TResult subElement in selector(element)) {
            yield return subElement;
        }
    }
    

    这是 YouTrack 问题:http://youtrack.jetbrains.com/issue/RSRP-413613

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-04
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 2018-03-23
      相关资源
      最近更新 更多