Hej Anders, //loopa igenom alla värden i listanIDictionary? array
Jag har två värden som hör ihop, och vill spara ner dessa i en array.
Vet att det finns ett IDictionary där man kan göra typ så här
IDictionary d;
d.Add("Test","a2");
är detta det bästa alternativet eller. Hur i så fall gör jag en foreach loop för att loopa ut hela innehållet med tex key och sen value i en sträng.
Har för mig att det finns någon collection också man kanske ska använda den?
Det jag vill är att en metod returnerar en Collection som jag sen kan loopa ut.
man kanske inte kan returnerar en IDictionary
/AndersSv: IDictionary? array
Eftersom IDictionary är ett interface kan du inte direkt skapa ett objekt av detta utan måste vända dig till en av de klasser som implementerar det. I ditt fall skulle jag rekommendera ett Hashtable som du
använder på samma sätt som du beskrev. Skapa ett nytt hashtable objekt och lägg till innehåll med
Add-method som tar en "key" och ett "value".
För att sen läsa ut innehållet finns det en del olika metoder. Du kan t.ex använda dig av
följande
<code>
IDictionaryEnumerator objs = myHashTable.GetEnumerator();
while( objs.MoveNext() )
{
// Gör något
}
</code>
Detta hämtar ut alla värden. Du kan även använda .Keys eller .Values på ditt hashtable objekt för att hämta ut en ICollection av respektive värden, som du sen kan loopa igenom. Givetvis kan du använda en foreach-loop kring ditt hashtable också, men då skall du tänka på att du får ut "object" och måste typkonvertera till rätt typ inne i loopen för att kunna använda värdet.
//AndreasSv: IDictionary? array
foreach (object o in MyDictionary.Values)
{
console.writeline(o);
}
//loopa igenom alla keys och plocka ut värdet:
foreach (DictionaryEntry de in Mydictionary)
{
console.writeline (de.key);
console.writeline (de.value);
}
//loopa igenom alla keys
foreach (object key in Mydictionary.keys)
{
console.writeline(key);
}