2013-02-27 7 views
5

Utworzono listę jako właściwość klasy i chcę ustawić pary klucz/wartość podczas definiowania listy. Pierwotnie używałem struktury, ale zrozumiałem, że prawdopodobnie nie jest to idealne rozwiązanie, więc zmieniłem ją na listę. Problem polega na tym, że otrzymuję błąd w składni.Ustawianie par klucz/wartość

Wszelkie pomysły?

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

na oko, i nie znając błędu, jest to para '[]' na końcu pierwszej linii (może to być także znak ';' po pierwszej KeyValuePair, powinien to być ','. Czy możesz podać błąd, który otrzymujesz, zapisać nas i wkleić kod? –

Odpowiedz

9

Prawdopodobnie jestem czegoś brakuje, ale bym użył słownika zamiast
Tak proste ....

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

a następnie używać go w następujący sposób:

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

Nie używałem C# - ani nie programowałem - przez ponad rok, więc szedłem po tym, co zapamiętałem. Ale z pewnością jest lepszym rozwiązaniem. –

0

Zmień średnik na przecinek w trzeciej linii i usuń nawiasy kwadratowe z pierwszej linii.

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

Nawiasem mówiąc, jeśli zmienisz go na słownik, uzyskasz możliwość łatwiejszego wyszukiwania wartości według ich klucza.

0
private List<KeyValuePair<String,String>> formData = new List<KeyValuePair<String, String>>() 
    { 
      new KeyValuePair<String, String>("lsd",""), 
      new KeyValuePair<String, String>("charset", "") 
    }; 
  1. Dlaczego [] po konstruktora?
  2. Przedmioty w inicjalizatorze kolekcji należy oddzielić przecinkami: ,.
0

spróbować

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

Spróbuj tego:

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

Miałeś dodatkowy [] w swojej definicji. Nie tworzysz tablicy, więc nie potrzebujesz jej. Również podczas inicjowania listy z niektórymi wartościami wartości powinny być oddzielone przecinkiem (,).

Moim zdaniem lepszym rozwiązaniem byłoby wykorzystanie Tuple class:

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