UserVoice Visual Studio дає посилання на загальну реалізацію OrdersDictionary від dotmore.
Але якщо вам потрібно отримати пари ключ / значення за індексом і не потрібно отримувати значення за ключами, ви можете скористатися одним простим трюком. Заявіть про якийсь загальний клас (я назвав його ListArray) наступним чином:
class ListArray<T> : List<T[]> { }
Ви також можете оголосити це конструкторами:
class ListArray<T> : List<T[]>
{
public ListArray() : base() { }
public ListArray(int capacity) : base(capacity) { }
}
Наприклад, ви читаєте кілька пар ключів / значень з файлу і просто хочете зберегти їх у тому порядку, який вони прочитали, щоб отримати їх пізніше за індексом:
ListArray<string> settingsRead = new ListArray<string>();
using (var sr = new StreamReader(myFile))
{
string line;
while ((line = sr.ReadLine()) != null)
{
string[] keyValueStrings = line.Split(separator);
for (int i = 0; i < keyValueStrings.Length; i++)
keyValueStrings[i] = keyValueStrings[i].Trim();
settingsRead.Add(keyValueStrings);
}
}
// Later you get your key/value strings simply by index
string[] myKeyValueStrings = settingsRead[index];
Як ви, можливо, помітили, у вашому ListArray не обов'язково можуть бути лише пари ключа / значення. Масиви елементів можуть бути будь-якої довжини, як у нерівному масиві.