前言:
NameValueCollection v.s Dictionary
使用起来很像的东西 其实差很大...
NameValueCollection 和 Dictionary<> 比较下表
(一)
NameValueCollection的Key和Value 只吃 string
NameValueCollection contatier = new NameValueCollection();contatier.Add("key1", "key1");contatier.Add("key2", "key2");
使用Dictionary可用泛型指定Key和Value的型态
Dictionary<string, string> dict = new Dictionary<string, string>();dict.Add("key1", "key1");dict.Add("key2", "key2");
(二)
Dictionary字典物件 没有给key为dict付值 取值时会出错
Dictionary<string, string> dict = new Dictionary<string, string>();dict.Add("key1", "key1");dict.Add("key2", "key2");Console.WriteLine(dict["dict"]);
虽然在下面的contaier没有给Key为dict值 但再取值时不会报错 而是会给一个**[空字串]**
NameValueCollection contatier = new NameValueCollection();contatier.Add("key1", "key1");contatier.Add("key2", "key2");Console.WriteLine(contatier["dict"]);
(三)
NameValueCollection可以使用重複Key来付值 如以下程式码 重複add [Key]为key1 可正常运作
NameValueCollection contatier = new NameValueCollection();contatier.Add("key1", "key1");contatier.Add("key2", "key2");contatier.Add("key1", "test1");
下面dict 字典物件使用如重複Key来付值会出错 如重複add [Key]为key1 就会报错
Dictionary<string, string> dict = new Dictionary<string, string>();dict.Add("key1", "key1");dict.Add("key2", "key2");dict.Add("key1", "test1");
其中第二点和第三点差别须注意