Это не так уж и далеко. Глядя на исходный код в Reflector, кажется, что используются три внутренних набора:
private Entry<TKey, TValue>[] entries;
private KeyCollection<TKey, TValue> keys;
private ValueCollection<TKey, TValue> values;
Обратите внимание, что существует также переменная int[] buckets
для отслеживания сегментов , необходимых в случае коллизий хеш-кода.
Цели этих переменных должны быть достаточно понятными. В любом случае, это не особенно удивительно, поскольку класс Dictionary
известен и задокументирован для предоставления (в идеале, по одному элементу на группу) O(1)
времени поиска.