2013-02-27 24 views
5

リストをクラスのプロパティとして作成し、リストを定義するときにキー/値のペアを設定する必要があります。私はもともと構造を使用していましたが、おそらく理想的なソリューションではないことに気が付いたので、リストに変更しました。問題は、構文にエラーが発生していることです。キーと値のペアを設定する

アイデア?

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

を推測では、エラーを知らなくても、それは最初の行の最後にある '[]'ペアです(最初のKeyValuePairの後の ';' charでもかまいません。 '、'でなければなりません)。コードをコピーして貼り付けなくても、エラーを表示することはできますか? –

答えて

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#を使用していません - またはプログラムされた - 1年以上のため、私が覚えているものに行っていた。しかし確かに良い解決策です。 –

0

3行目のセミコロンをカンマに変更し、最初の行から角括弧を削除します。

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. コレクションイニシャライザ内の項目は、カンマ:,を使用して区切る必要があります。

    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", "") 
    }; 
2

を試してみてください。配列を作成していないので、必要ありません。また、リストをいくつかの値で初期化する場合、値はカンマ(,)で区切る必要があります。私の意見で

、より良いアプローチはTuple classを使用することです:

pirvate List<Tuple<string, string>> formData = new List<Tuple<string, string>>() 
{ 
    new Tuple<string, string>("lsd",""), 
    new Tuple<string, string>("charset", "") 
}; 
関連する問題