Tjah, det der ville nok nemmest gøres med noget i stil af dette (forudsat du bruger mindst .Net 2.0 samt C# 2.0)
public string Test(int element, string key){
List<Dictionary<string,string>> dictionary = new List<Dictionary<string,string>>();
Dictionary<string,string> element = new Dictionary<string, string>();
element["question"] = "Mit spørgsmål?";
element["svar1"] = "Mit svar 1";
element["svar2"] = "Mit svar 2";
element["svar3"] = "Mit svar 3";
element["svar4"] = "Mit svar 4";
element["rigtigt_svar"] = "3";
dictionary.Add(element);
return dictionary[element][key];
}
Det ser lidt klumpet ud, men hvis du vil have strenge som "nøgler"/indekser i arrays/lister - så skal du desværre have fat i denne lidt, besværlige løsning. For at skrælle eksemplet lidt af, så har vi fat i 2 klasser:
List<T>
Dictionary<TKey,TValue>
(Læs dette som "Liste af T" og "Dictionary af TKey og TValue").
T (samt TKey og TValue) er her en type, og denne defineres først når vi endeligt bestemmer os for hvad vi skal bruge. Jeg har her valgt følgende:
Dictionary af string og string. I dette tilfælde betyder det at nøglerne i vores Dictionary (læs det som et opslagsværk, ligesom en ordbog, du slår op under et ord og du får et ord tilbage, groft sagt) er strenge og det er værdierne også.
Det der så helt slår luften væk under en er nu at vi opretter en List af T, hvor T er Dictionary af string og string (dvs. Dictionary<string, string> hvilket giver denne meget næsten ulæselige syntaks der giver en lyst til at binde sig selv fast til sin stol og slå kolbøtter.
Jeg håber eksemplet kan bruges til noget, du kan evt. læse artiklen jeg har skrevet her på udvikleren omkring generics.
http://www.udvikleren.dk/DotNet/Article.aspx/278/