resharper - 错误的 Resharper 多次枚举警告?

标签 resharper ienumerable

这段代码:

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

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

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

最佳答案

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

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

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

关于resharper - 错误的 Resharper 多次枚举警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23815468/

相关文章:

javascript - ReSharper 关于 ClosureOnModifiedVariable 的警告 - 为什么?

c# - IEnumerable<T> 包装器的 GetEnumerator() 的替代实现

c# - 如何正确使用 InsertAllOnSubmit() 是否比循环 InsertOnSubmit() 更好?

c# - 有没有比 .Any() 更快的方法来查找 IEnumerable<T> 是否有任何数据?

c# - 如何阻止 ReSharper 在需要 Action 的 lambda 表达式上显示错误?

visual-studio-2012 - ASP.NET MVC5 F12 不创建 View

visual-studio - VS 2010 : Can’t insert mvvm-light snippet using shortcut - incompatibility with resharper 5?

resharper - 如何将ReSharper单元测试体系结构更改为x64?

c# - 如何将 IEnumerable<IEnumerable<T>> 转换为 List<string>?

c# - 如何将List<List<Int32>>的初始化简化为IEnumerable<IEnumerable<Int32>>?