当我说
Dictionary<int,string>
这是否等同于两个不同的数组,例如:
int[] keys =new int[] { 1, 2, 3 };
string[] values=new string[]{"val1","val2","val3"};
当我说
Dictionary<int,string>
这是否等同于两个不同的数组,例如:
int[] keys =new int[] { 1, 2, 3 };
string[] values=new string[]{"val1","val2","val3"};
这并不太遥远。通过反编译工具Reflector查看源代码,似乎使用了三个内部集合:
private Entry<TKey, TValue>[] entries;
private KeyCollection<TKey, TValue> keys;
private ValueCollection<TKey, TValue> values;
int[] buckets
变量用于跟踪哈希码冲突时所需的桶。Dictionary
类已知并记录为提供(理想情况下,每个桶一个项)O(1)
查找时间。