当我说
Dictionary<int,string>
Run Code Online (Sandbox Code Playgroud)
它是否相当于两个不同的数组,例如:
int[] keys =new int[] { 1, 2, 3 };
string[] values=new string[]{"val1","val2","val3"};
Run Code Online (Sandbox Code Playgroud)
那不是太远了.查看Reflector中的源代码,似乎使用了三个内部集合:
private Entry<TKey, TValue>[] entries;
private KeyCollection<TKey, TValue> keys;
private ValueCollection<TKey, TValue> values;
Run Code Online (Sandbox Code Playgroud)
请注意,还有一个int[] buckets变量用于跟踪哈希码冲突情况下所需的存储桶.
这些变量的目的都应该是相当不言自明的.无论如何,这并不特别令人惊讶,因为Dictionary该类已知并有文档记录以提供(理想情况下,每桶一项)O(1)查找时间.