Về mặt ngữ nghĩa, a Dictionary<int, T>
và List<T>
rất giống nhau, cả hai đều là các thùng chứa truy cập ngẫu nhiên của khung .NET. Để sử dụng danh sách thay thế cho từ điển, bạn cần một giá trị đặc biệt trong loại T
(như null
) để thể hiện các vị trí trống trong danh sách của bạn. Nếu T
không phải là loại int
không có int?
giá trị như , bạn có thể sử dụng thay thế hoặc nếu bạn chỉ muốn lưu trữ giá trị dương, bạn cũng có thể sử dụng giá trị đặc biệt như -1 để thể hiện các vị trí trống.
Cái nào bạn sẽ chọn nên phụ thuộc vào phạm vi của các giá trị chính. Nếu các khóa của bạn Dictionary<int, T>
nằm trong một khoảng nguyên, không có nhiều khoảng trống giữa chúng (ví dụ: 80 giá trị trong số [0, ... 100]), thì a List<T>
sẽ phù hợp hơn, vì việc truy cập theo chỉ mục nhanh hơn và có ít bộ nhớ và thời gian hơn so với từ điển trong trường hợp này.
Nếu các giá trị khóa của bạn là 100 int
giá trị từ một phạm vi như [0, ..., 1000000], thì List<T>
bộ nhớ cần có 1000000 giá trị T, trong đó từ điển của bạn sẽ chỉ cần bộ nhớ theo thứ tự cường độ khoảng 100 giá trị T, 100 giá trị của int (cộng với một số chi phí, trong thực tế, cần khoảng 2 lần bộ nhớ để lưu trữ 100 khóa và giá trị đó). Vì vậy, trong trường hợp sau, một từ điển sẽ phù hợp hơn.