Entwickler-Ecke

Basistechnologien - Hash verschachtelt


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 user profile iconChristian 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