【c#】NameValueCollection 和 Dictionary 差異??

  • 1433
  • 0
  • c#
  • 2018-01-09

前言:

NameValueCollection v.s Dictionary

使用起來很像的東西 其實差很大...

NameValueCollection 和 Dictionary<>  比較下表

 

  NameValueCollection Dictionary<,>
1. Key和Value 都是String型態 可用泛型來指定Key和Value型態
2. 可對於未指定的Key取值 不能對於未指定的Key取值 (會報錯誤)
3. 可對於重複鍵加值 不可於重複鍵加值

差別的程式碼在下面和大家介紹


第一點  

  1.  
    NameValueCollection contatier = new NameValueCollection();
    contatier.Add("key1", "key1");
    contatier.Add("key2", "key2");

    NameValueCollection 使用方式 ,只需直接New一個NameValueCollection即可使用

  2.  

    ​Dictionary<string, string> dict = new Dictionary<string, string>();
    dict.Add("key1", "key1");
    dict.Add("key2", "key2");
    

    使用Dictionary需要指定Key和Value的型態

第二點

  1. 雖然在下面的contaier沒有給Key為dict值 但再取值時不會報錯  而是會給一個[空字串]

    NameValueCollection contatier = new NameValueCollection();
    contatier.Add("key1", "key1");
    contatier.Add("key2", "key2");
    Console.WriteLine(contatier["dict"]);
  2. 下面dict 字典物件 沒有給key為dict付值 再取值時會出錯

    ​Dictionary<string, string> dict = new Dictionary<string, string>();
    dict.Add("key1", "key1");
    dict.Add("key2", "key2");
    Console.WriteLine(dict["dict"]);

第三點

  1. NameValueCollection可以使用重複Key來付值 如以下程式碼 重複add [Key]為key1 可正常運作

    NameValueCollection contatier = new NameValueCollection();
    contatier.Add("key1", "key1");
    contatier.Add("key2", "key2");
    contatier.Add("key1", "test1");
  2. 下面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");

 

 


如果本文對您幫助很大,可街口支付斗內鼓勵石頭^^