代码之家  ›  专栏  ›  技术社区  ›  Jimmy W

了解.NET泛型集合实现细节的最佳资源是什么?

  •  4
  • Jimmy W  · 技术社区  · 16 年前

    我对理解.NET中泛型集合的底层实现细节很感兴趣。我想到的是一些细节,比如如何存储集合、CLR如何访问集合的每个成员等等。

    对于类似于传统数据结构的集合,比如LinkedList和Dictionary,我想我已经了解了下面的情况。然而,我对诸如List(如何设置为既可索引又可扩展?)和SortedList之类的集合并不是很确定,因此任何关于我可以查找以了解更多关于它们的信息的线索都将不胜感激。

    2 回复  |  直到 16 年前
        1
  •  2
  •   Johannes Rudolph    16 年前

    Reflector 以及反编译原始源代码。您可以将源代码反编译为C#或VB,还可以分析代码中的依赖项。缺点是Reflector无法从优化的代码和枚举器(这是集合实现的重要部分)生成易于阅读的代码。

    微软还发布了原始源代码,它还提供了所有原始的注释和无障碍的变量名。看到了吗 here 如何启用它。您需要编写一个小的演示程序来让visualstudio下载正确的源代码,但是它们会被缓存在某个文件夹中,这样您就可以在调试器之外轻松地访问它们。另一种选择是使用一些工具来下载完整的源代码。我认为有一个MSDN下载与来源太多。

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

        2
  •  5
  •   Fergal Moran    16 年前

    看看反射器。使用它,您可以打开BCL中的任何类并查看其内部以及如何实现它。学习代码的奇妙方式。

    推荐文章