Một NameValueCollection
có thể lấy yếu tố của chỉ số (nhưng bạn không thể yêu cầu các chỉ số của một phím cụ thể hoặc phần tử). Vì vậy,
var coll = new NameValueCollection();
coll.Add("Z", "1");
coll.Add("A", "2");
Console.WriteLine("{0} = {1}", coll.GetKey(0), coll[0]); // prints "Z = 1"
Tuy nhiên, nó cư xử kỳ quặc (so với một IDictionary) khi bạn thêm một phím nhiều lần:
var coll = new NameValueCollection();
coll.Add("Z", "1");
coll.Add("A", "2");
coll.Add("Z", "3");
Console.WriteLine(coll[0]); // prints "1,3"
Các hành vi cũng được ghi chép lại, tuy nhiên.
Thận trọng: NameValueCollection
không không triển khai IDictionary
.
Là một sang một bên: Dictionary<K,V>
không có bất kỳ chỉ số bạn có thể sử dụng, nhưng miễn là bạn chỉ thêm yếu tố, và không bao giờ loại bỏ bất kỳ, thứ tự của các yếu tố là thứ tự chèn. Lưu ý rằng đây là một chi tiết thực hiện hiện tại của Microsoft: tài liệu rõ ràng nói rằng thứ tự là ngẫu nhiên, vì vậy hành vi này có thể thay đổi trong các phiên bản tương lai của .NET Framework hoặc Mono.
Điều này thật tuyệt. Một cách thay thế cho Hashtable và Dictionary rất đơn giản. Ngoài ra, lưu ý về thứ tự sắp xếp mặc định của Dictionary rất hữu ích. –
Hãy nhớ thêm: sử dụng System.Collections.Specialized; –