Resharper错误的多次枚举警告?

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

提取多个来源的单个扁平可枚举数字列表。Resharper警告可能会多次枚举a(第二个)- 但这是愚蠢的; 每个来源只被枚举一次。 是的,符号a将被多次枚举,但每次下面都会有不同的来源。
我有所遗漏,还是Resharper发出了错误警告?
1个回答

12

是的,这是一个错误的警告。如果您查看SelectMany的实现,可以看到只有一个嵌套元素的枚举:

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

这是与此相关的 YouTrack 问题链接:http://youtrack.jetbrains.com/issue/RSRP-413613


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接