2013-02-27 98 views
5

我創建了一個List作爲類的屬性,並且希望定義列表時設置的鍵/值對。我最初使用結構,但意識到這可能不是理想的解決方案,所以我把它改成一個列表。問題是我得到的語法錯誤。設置鍵/值對

任何想法?

private List<KeyValuePair<String,String>> formData = new List<KeyValuePair<String, String>>[] 
    { 
      new KeyValuePair<String, String>("lsd",""), 
      new KeyValuePair<String, String>("charset", "") 
    }; 
+0

在猜測,並且在不知道錯誤的情況下,它是第一行末尾的'[]'對(它也可以是第一個KeyValuePair後面的';',它應該是''''。你能否提供你遇到的錯誤,保存我們複製和粘貼你的代碼? – 2013-02-27 10:32:54

回答

9

也許我失去了一些東西,但我會用字典來代替
這麼簡單....

Dictionary<string, string>formData = new Dictionary<string, string> 
{ 
    {"lsd", "first"}, 
    {"charset", "second"} 
};  

,然後用它在以下方面:

foreach(KeyValuePair<string, string>k in formData) 
{ 
    Console.WriteLine(k.Key); 
    Console.WriteLine(k.Value); 
} 
.... 
if(formData.ContainsKey("lsd")) 
    Console.WriteLine("lsd is already in"); 
....  
string v = formData["lsd"]; 
Console.WriteLine(v); 
+0

我還沒有使用C#或編程 - 一年多,所以我想起了我所記得的。但肯定是更好的解決方案。 – 2013-02-27 10:45:40

0

在第三行上將分號更改爲逗號,並從第一行中刪除方括號。

private List<KeyValuePair<String,String>> formData = new List<KeyValuePair<String, String>> 
{ 
     new KeyValuePair<String, String>("lsd",""), 
     new KeyValuePair<String, String>("charset", "") 
}; 

順便提一下,如果將其更改爲字典,則可以更輕鬆地按鍵查找值。

0
private List<KeyValuePair<String,String>> formData = new List<KeyValuePair<String, String>>() 
    { 
      new KeyValuePair<String, String>("lsd",""), 
      new KeyValuePair<String, String>("charset", "") 
    }; 
  1. 爲什麼[]構造後取出[]?集合初始化中
  2. 項目必須使用逗號隔開:,
0

嘗試

  private List<KeyValuePair<String, String>> formData = new List<KeyValuePair<String, String>> 
    { 
      new KeyValuePair<String, String>("lsd",""), 
      new KeyValuePair<String, String>("charset", "") 
    }; 
2

試試這個:

private List<KeyValuePair<String,String>> formData = new List<KeyValuePair<String, String>> 
{ 
    new KeyValuePair<String, String>("lsd",""), 
    new KeyValuePair<String, String>("charset", "") 
}; 

你在你的定義有一個額外的[]。你不是在創建一個數組,所以你不需要它。此外,當初始化具有某些值的列表時,值應該用逗號分隔(,)。

在我看來,更好的方法是使用Tuple class

pirvate List<Tuple<string, string>> formData = new List<Tuple<string, string>>() 
{ 
    new Tuple<string, string>("lsd",""), 
    new Tuple<string, string>("charset", "") 
};