System.Linq.Enumerable.ToList()的来源在哪里?

时间:2019-06-17 04:22:13

标签: c# linq

我正在查看是否将$m=New MongoClient('mongodb+srv://username:password@cluster0-woior.mongodb.net/test'); echo "test"; 放在列表中的.ToList()上,如果IEnumerable已经是{{1 }}。

我的目标是查看源代码。这就是问题隧道的起点。首先,我发现问题Where can I view LINQ source code? [closed]导致了DOTNet的完整框架版本,但深入研究代码仅显示了一个小的Enumerable类Enumerable

问题

以下扩展方法的源代码在哪里?

Object

子问题1完整框架版本在哪里?

子问题2 .net核心版本在哪里?

2 个答案:

答案 0 :(得分:7)

  

问题1完整框架版本在哪里?

https://github.com/microsoft/referencesource/blob/master/System.Core/System/Linq/Enumerable.cs#L947

  

问题2 .net核心版本在哪里?

https://github.com/dotnet/corefx/blob/8750960d3fafa46a9b838c351e995a01fa8b599f/src/System.Linq/src/System/Linq/ToCollection.cs#L23

上面是两个ToList实现的链接(还有其他实现)。

它们涵盖.NET Framework和.NET Core。

  

我要在哪里查看是否将.ToList()放在IEnumerable上   如果列表可能会或可能不会成为列表,则会导致性能下降   对象已经是一个列表。

肯定会按照the docs创建一个新列表:

  

从IEnumerable创建列表。

您还可以通过在ToList上调用List<int>来自己进行测试。然后更改新的List<int>原始List<int>未被更改-因此它必须创建了一个新的List<int>

答案 1 :(得分:3)

https://source.dot.net/是.dot net(.net核心)源代码的出色在线工具。

ToList<T>()的源代码取决于类型。参见https://source.dot.net/#q=Linq%20ToList