Семантично, 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 клавіш і значень). Тож в останньому випадку словник буде більш доречним.