foxy - Fr 11.07.08 16:36
Titel: Hash verschachtelt
Hallo Leute,
kurze frage wenn ich eine hash schachteln will also so
hash["name"]["preis"]
hash["name"]["others"]
hash["name2"]["preis"]
kann ich das einfach zuweisen ?
Also diese schreibweise ist die möglich ? oder muss ich imme rmit add arbeiten ?
also kann ich machen
C#-Quelltext
1: 2:
| hash["name"]["preis"]=3; hash["name2"]["preis"]=2; |
wenn das nicht geht, weis wer eine intelligente methode wie ich so etwas machen kann ?
grüsse
Moderiert von
Christian S.: Topic aus C# - Die Sprache verschoben am Fr 11.07.2008 um 16:49
Christian S. - Fr 11.07.08 16:59
Hallo!
Vorweg: Eine
HashTable stammt noch aus Zeiten von .NET 1.1. Inzwischen sollte man besser die generische Dictionary-Klasse benutzen.
Da die HashTable nicht generisch ist, kann sie Items nur als Object zurückgeben, womit Deine verschachtelte Syntax schon nicht funktionieren kann, denn
hash["foo"] ist erst einmal nur noch ein Object.
Auf jeden Fall musst Du natürlich HashTables (egal ob innere oder äußere) wie jede andere Klasse auch erstellen. Sonst kann man nicht drauf zugreifen. Bei einem Dictionary sähe das ganze so aus (mal als Oxygene, bist ja schließlich Pascal gewohnt ;-))
Oxygene-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| var myDict := new Dictionary<String, Dictionary<String, Integer>>;
myDict['name'] := new Dictionary<String,Integer>; myDict['name']['preis'] := 3;
myDict['name2'] := new Dictionary<String,Integer>; myDict['name2']['preis'] := 2;
for kvp in myDict do for kvp2 in kvp.Value do Console.WriteLine(kvp.Key+' '+kvp2.Key+' '+kvp2.Value.ToString);
Console.ReadLine; |
Grüße
Christian