2010-04-27 45 views
4

我有兴趣了解.NET中泛型集合的底层实现细节。我想到的是诸如收藏如何存储,CLR访问集合中的每个成员的方式等。什么是了解.NET泛型集合实现细节的好资源?

对于类似于传统数据结构(如LinkedList和Dictionary)的集合,我认为我对下面发生的事情有了解。然而,对于像List这样的集合(如何设置它既是可索引也是可扩展的?)和SortedList,我不太确定。因此,我非常感谢任何可以查找的东西来了解更多关于它们的知识。

回答

2

一个伟大的方式开始寻找实施细则正在开拓Reflector并反编译原始源代码。您可以将源代码反编译为C#或VB,并分析代码中的依赖关系。缺点是Reflector无法从优化代码和枚举器(这是集合实现的重要组成部分)中生成易于阅读的代码。

微软还发布了原始源代码,该源代码还提供所有原始注释和不可变的变量名称。请参阅here如何启用它。您需要编写一个小型演示程序,以使Visual Studio能够下载正确的源代码,但之后它们将被缓存到某个文件夹中,以便您可以在调试器外轻松访问它们。另一种选择是使用一些下载完整源代码的工具。我认为有一个MSDN下载与来源也。

你可能想看看的另一件事是泛型如何工作。它们是构建集合的基础。与Java相比,.NET实现更加卓越,因为它允许集合值类型而不会影响性能。我已经写了一个blog post关于这个主题,所以你可能想看看或直接阅读official Microsoft Paper

5

看看Reflector。使用这个,您可以在BCL中开设任何课程,并查看其内部以及它的实施方式。学习代码的好方法。

否则,您可以将Visual Studio设置步入.NET代码在选项对话框调试和步入任何集合,你正在调试..

+1

同意。在C#中编程时,反射器是我最为有用的工具之一。 – kurige 2010-04-27 17:58:32