Possible Duplicate:
IDictionary<string, string> or NameValueCollection
Any reason I should use Dictionary<string,string> instead of NameValueCollection?
(in C# / .NET Framework)
Option 1, using NameValueCollection:
//enter values: NameValueCollection nvc = new NameValueCollection() { {"key1", "value1"}, {"key2", "value2"}, {"key3", "value3"} }; // retrieve values: foreach(string key in nvc.AllKeys) { string value = nvc[key]; // do something }
Option 2, using Dictionary<string,string>...
//enter values: Dictionary<string, string> dict = new Dictionary<string, string>() { {"key1", "value1"}, {"key2", "value2"}, {"key3", "value3"} }; // retrieve values: foreach (KeyValuePair<string, string> kvp in dict) { string key = kvp.Key; string val = kvp.Value; // do something }
For these use cases, is there any advantage to use one versus the other? Any difference in performance, memory use, sort order, etc.?
NameValueCollection is used to store a collection of associated String keys and String values that can be accessed either with the key or with the index. It is very similar to C# HashTable, HashTable also stores data in Key , value format . NameValueCollection can hold multiple string values under a single key.
The Key value of a Dictionary is unique and doesn't let you add a duplicate key entry.
The name is case-insensitive.
They aren't semantically identical. The NameValueCollection
can have duplicate keys while the Dictionary
cannot.
Personally if you don't have duplicate keys, then I would stick with the Dictionary
. It's more modern, uses IEnumerable<>
which makes it easy to mingle with Linq
queries. You can even create a Dictionary
using the Linq
ToDictionary()
method.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With