2010-04-27 46 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