У OrderedDictionaryперевантаженої операції індексації , так що індексація з цілим числом Nбуде отримати елемент в положенні N, при індексуванні з Objectвитягне елемент coresponding до цього об'єкта. Якби створити OrderedDictionary<int, string>виклик myDict, і додали елементи (1, "Джордж") і (0, "Фред") у цьому порядку, слід myDict[0]повернути "Джордж" або "Фред"?
Таке питання могло бути вирішене, наклавши обмеження класу на тип ключа. З іншого боку, велика частина корисності загальних колекцій випливає з їх здатності ефективно працювати з ціннісними типами. Накладення обмеження класу на тип ключа здавалося б трохи потворним.
Якщо клас не повинен бути сумісним з CLS, але просто мусив працювати з vb.net, розумним дизайном можна було б скористатись іменованими властивостями. Таким чином, у наведеному вище прикладі, вийшов myDict.ByKey[0]би "Фред" і вийшов myDict.BySequence[0]би "Джордж". На жаль, такі мови, як C #, не підтримують іменовані властивості. Хоча можна було б щось заблукати, щоб дозволити використовувати вищезазначений синтаксис навіть без таких властивостей, невдале рішення обернути поля структур на зразок Pointі Rectangleозначає, що для myDict.ByKey[0] = "Wally"роботи myDict.ByKeyпотрібно було б повернути новий об’єкт класу. Структура була б більш ефективною, але компілятори відхиляли б те, що виглядало як запис у структуру лише для читання (незважаючи на те, що властивість не змінює структуру, яку повертаєByKey, але замість цього змініть колекцію, на яку вона містить посилання).
Особисто я вважаю, що об'єкт, що відповідає словнику, який був визначений як відстеження порядку вставки, було б приємною справою; Я також хотів би мати об’єкт-словник, який міг би легко повернути ключ, пов'язаний з певним ключем (так, наприклад, якщо у словника нечутливий до регістру і додав запис із ключем "GEORGE", один можна запитати у словнику, який ключ пов’язаний з "Джорджем" без необхідності пошуку всіх KeyValuePairоб'єктів, повернених у перерахунку.
SortedDictionary<TKey, TValue>: msdn.microsoft.com/en-us/library/f7fta44c.aspx