【发布时间】:2019-06-17 04:22:13
【问题描述】:
如果Object 已经是List,我正在查看是否将.ToList() 放在可能是或可能不是列表的IEnumerable 上会导致性能下降。
我的目标是查看源代码。这就是问题的隧道开始的地方。首先我发现了 SO Question Where can I view LINQ source code? [closed] 这导致了 DOTNet 的完整框架版本,但深入研究代码只显示了一个小的 Enumerable 类 Enumerable。
问题
以下扩展方法的源代码在哪里?
public static List<TSource> ToList<TSource>(this IEnumerable<TSource> source);
子问题 1 完整框架版本在哪里?
子问题 2 .net core 版本在哪里?
【问题讨论】:
-
如果你经常这样做,看看 ReSharper,它有分析这些东西的工具。
-
@Stefan 这里的问题是输入来自我无法控制的东西。所以 Resharper 静态分析在这种情况下不起作用
-
现在我需要决定什么更好。检查它是否已经是一个列表,或者进行两次枚举。
-
我建议使用
IReadOnlyList<T>而不是IEnumerable<T>。这使消费者不必担心重复枚举,但可以清楚地表明您不希望他们编辑列表。 -
我的意思是:使用反编译器。