Autor Beitrag
foxy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 814

Ubuntu, Gentoo
C++, PHP, Java, Ruby, Perl (Eclipse)
BeitragVerfasst: Fr 11.07.08 16:36 
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

ausblenden 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

_________________
"Only wimps use tape backup: real men just upload their important stuff on ftp, and let the rest of the world mirror it." (Linus Torvalds)
OperatingSystem Laptop (Ubuntu Hardy)
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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 ;-))

ausblenden 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

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".