Я собираюсь сделать еще один удар по тому, что реальный"ключевой" концепт, который вам не хватает, это
Если бы я рискнул предположить, я бы сказал, что я думаю вы представляете Dictionary<TKey, TValue>
как синоним его содержимого. У вас есть пара пар ключ-значение - это словарь, верно? И здесь вы упускаете важную деталь.Хотя вы, конечно, могли бы реализовать IDictionary<TKey, TValue>
, используя, скажем, простой KeyValuePair<TKey, TValue>[]
, в этом случае было бы упущено одно из величайших преимуществ наличия словарного типа в первую очередь: быстрый поиск по ключу.
Даже если вы сохраняете массив отсортированным и используете бинарный поиск для определения местоположения ключей (что, кстати, потребует затрат на все вставки), вы не сможете конкурировать с реализацией хеш-таблицы что Dictionary<TKey, TValue>
использует.Эта реализация не просто «пара пар ключ-значение» без определенной структуры;структура все для этого типа.Таким образом, быстрое приведение из набора пар «ключ-значение» (контент без структуры) прямо в словарь (с очень конкретным структурированием) на самом деле невозможно - не то, что структурная структура типа действительно определяет, возможно ли приведение вC # в любом случае (вы должны соблюдать только наследование и несколько встроенных и, возможно, пользовательских преобразований типов).
Подумайте об этом так: словарь является контейнером,не содержание, верно?Поэтому, если у меня есть банка с разными типами печенья, и я хочу вынуть все шоколадные печенья, я могу извлечь их, положить их в небольшую стопку и затем сказать: «Теперь это банка шоколадачип печенье, верно?Нет, я только взял печенье из ;у меня есть куча, а не банка.Если я хочу банку печенья с шоколадной крошкой, тогда мне придется положить их в одну - и это потребует некоторого ненулевого объема работы.