Ответ 1
Посмотрите
OrderedDictionary: общая реализация IOrderedDictionary
Эта реализация упорядоченного словарь очень хорош в поиске операции: массив допускает O (1) поиск по индексу и хэш-таблица позволяет O (1) искать по ключу. Однако, необходимость сохранения массива синхронизируется с хэш-таблицей что операции вставки/удаления имеют невыгодность выполнения эти операции над массивом (O (n) at наихудший). Существует также, конечно, дополнительная потребность в памяти для хранения обе структуры данных. Из-за этих недостатки, OrderedDictionary следует использовать только при вставке/удалении операции будут минимальными, и является необходимость эффективного доступа элементы по индексу и/или клавише.