.NET泛型集合实现细节学习的好资源是什么?

4

我想了解.NET中通用集合的底层实现细节。我的意思是,这些集合是如何存储的,CLR如何访问集合中的每个成员等等细节。

对于类似于传统数据结构的集合,例如LinkedList和Dictionary,我认为我已经理解了底层的运行原理。然而,对于像List(如何设置使其既可索引又可扩展?)和SortedList这样的集合,我并不确定,因此任何关于如何学习更多相关知识的指导都将不胜感激。

2个回答

5

看一下Reflector。使用它,您可以打开BCL中的任何类并查看其内部以及它是如何实现的。这是学习代码的惊人方式。

否则,您可以在“选项”调试对话框中设置Visual Studio以步入.NET代码,并在调试过程中步入任何集合。


1
同意。Reflector 是我在使用 C# 进行编程时最有用的工具之一。 - kurige

2
一个了解实现细节的好方法是打开Reflector并反编译原始源代码。您可以将源代码反编译为C#或VB,并分析代码中的依赖关系。缺点是Reflector不能从优化代码和枚举器(这是集合实现的重要部分)中产生易于阅读的代码。
微软还发布了原始源代码,此外还提供了所有原始注释和未混淆变量名称。请参见此处以了解如何启用它。您需要编写一个小型演示程序,以使Visual Studio下载正确的源代码,但然后它们将被缓存在某个文件夹中,因此您可以在调试器之外轻松访问它们。另一个选项是使用一些下载完整源代码的工具。我认为也有一个带有源代码的MSDN下载。
您可能还想查看泛型实际上是如何工作的。它们是构建集合的基础知识。与Java相比,.NET实现更加优越,因为它允许值类型的集合而不会影响性能。我已经写了一篇博客文章,所以您可能想要查看该文章或直接阅读官方微软论文

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