Семантично, a Dictionary<int, T>
і List<T>
дуже схожі, обидва є контейнерами з випадковим доступом в .NET-рамках. Щоб використовувати список як заміну для словника, вам потрібно спеціальне значення у вашому типі T
(як null
), щоб представити порожні слоти у вашому списку. Якщо T
це не нульовий тип на зразок int
, ви можете використовувати його int?
замість цього, або якщо ви просто розраховуєте зберегти позитивні значення, ви також можете використати спеціальне значення, наприклад -1 для представлення порожніх слотів.
Який із них ви виберете, має залежати від діапазону ключових значень. Якщо ваші ключі знаходяться в цілому Dictionary<int, T>
інтервалі, без багатьох проміжків між ними (наприклад, 80 значень поза [0, ... 100]), то а List<T>
буде більш доцільним, оскільки доступ за індексом швидший, і в цьому випадку менше пам'яті та витрат часу в порівнянні зі словником.
Якщо ваші ключові значення - 100 int
значень з діапазону, як [0, ..., 1000000], тоді List<T>
потрібна пам'ять, щоб вмістити 1000000 значень T, де вашому словнику просто знадобиться пам'ять на порядок близько 100 значень T, 100 значень int (плюс деякі накладні, насправді очікуйте приблизно в 2 рази більше пам’яті для зберігання цих 100 клавіш і значень). Тож в останньому випадку словник буде більш доречним.