StringDictionary
đến từ .NET 1.1 và thực hiện IEnumerable
Dictionary<string, string>
đến từ .NET 2.0 và thực hiện IDictionary<TKey, TValue>,IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable
IgnoreCase chỉ đặt ra cho chính trong StringDictionary
Dictionary<string, string>
là tốt cho LINQ
Dictionary<string, string> dictionary = new Dictionary<string, string>();
dictionary.Add("ITEM-1", "VALUE-1");
var item1 = dictionary["item-1"]; // throws KeyNotFoundException
var itemEmpty = dictionary["item-9"]; // throws KeyNotFoundException
StringDictionary stringDictionary = new StringDictionary();
stringDictionary.Add("ITEM-1", "VALUE-1");
var item1String = stringDictionary["item-1"]; //return "VALUE-1"
var itemEmptystring = stringDictionary["item-9"]; //return null
bool isKey = stringDictionary.ContainsValue("VALUE-1"); //return true
bool isValue = stringDictionary.ContainsValue("value-1"); //return false
Có sự khác biệt về hiệu suất giữa hai loại không? – thecoop
Bạn nên điểm chuẩn để xem cái nào hoạt động tốt hơn cho tình huống đặc biệt của bạn. Tôi không mong đợi một sự khác biệt hiệu suất đáng chú ý. Tôi khuyên bạn nên sử dụng 'Dictionary' cho tất cả các mã mới (trừ khi bạn cần nhắm mục tiêu 1.1). –
@thecoop không có dữ liệu cứng để trình bày từ phía tôi bây giờ, nhưng một lần khi tôi đã kiểm tra tốc độ 'StringDictionary' thực hiện tồi tệ hơn (mặc dù tất cả những gì wont vấn đề chủ yếu). Thành thật mà nói, trước đây tôi đã có khái niệm rằng 'StringDictionary' là một bộ sưu tập chuyên biệt sorta có nghĩa là tăng tốc mọi thứ khi' chuỗi' là chìa khóa, và ngạc nhiên lớn của tôi khi nó hoạt động tồi tệ hơn trong thử nghiệm của tôi, tôi googled nó lên chỉ để tìm hiểu nó là nongeneric – nawfal