Semanticamente, a Dictionary<int, T>
e List<T>
são muito semelhantes, ambos são contêineres de acesso aleatório da estrutura .NET. Para usar uma lista como substituta de um dicionário, você precisa de um valor especial no seu tipo T
(como null
) para representar os espaços vazios na sua lista. Se T
não for do tipo anulável int
, você pode usar int?
ou, se espera apenas armazenar valores positivos, também pode usar um valor especial como -1 para representar espaços vazios.
Qual você escolherá depende do intervalo dos valores-chave. Se suas chaves Dictionary<int, T>
estão dentro de um intervalo inteiro, sem muitas lacunas entre elas (por exemplo, 80 valores entre [0, ... 100]), a List<T>
será mais apropriado, pois o acesso pelo índice é mais rápido e há menos sobrecarga de memória e tempo em comparação com um dicionário nesse caso.
Se seus valores-chave forem 100 int
valores de um intervalo como [0, ..., 1000000], será List<T>
necessário ter memória para armazenar 1000000 valores de T, onde seu dicionário precisará apenas de memória em uma ordem de magnitude em torno de 100 valores de T, 100 valores de int (mais alguma sobrecarga, na realidade, esperam cerca de 2 vezes a memória para armazenar essas 100 chaves e valores). Portanto, no último caso, um dicionário será mais apropriado.