Entwickler-Ecke
C# - Die Sprache - Dreidimensionale String-ArrayList
Raven280438 - Do 30.09.10 20:55
Titel: Dreidimensionale String-ArrayList
Hi,
ich habe eine 3-dimensionale ArrayList mit verschiedenen Texten gefüllt.
Wie kann ich jetzt ein bestimmtes Element zugreifen?
Folgendes hab ich probiert:
C#-Quelltext
1: 2: 3:
| ArrayList reihe = new ArrayList(); reihe = texte.IndexOf(i); String texte_text = reihe.IndexOf(j); |
Das funktioniert aber nicht ;)
Trashkid2000 - Do 30.09.10 21:08
Hi,
also, aus dem Code-Schnipsel wird man aber auch nicht schlau!
So, wie Du die ArrayList initialisierst sehe ich da keine 3 Dimensionen. Ausserdem sollte man sowieso eine List<> nehmen, die streng typisiert ist.
In eine ArrayList kannst Du ja wirklich alles reinschmeissen, und musst es dann auch jedes Mal beim rausholen in den entsprechenden Typ casten.
Vielleicht zeigst Du mal mehr Code oder erklärst, wofür Du sowas brauchst.
Gruss, Marko
Raven280438 - Do 30.09.10 21:14
Hi,
also ich erstelle die ArrayList auf folgendem Wege:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| ArrayList texte = new ArrayList(); for (int i = 0; i < anzahl1; i++) { ArrayList reihe = new ArrayList(); for (int j = 0; j < anzahl2; j++) { reihe.Add(text); } texte.Add(reihe); } |
Das dadurch alle Elemente den gleichen Text haben ist erstmal nebensächlich.
Wie kann ich jetzt auf ein bestimmtes Element zugreifen?
Gruß
Yogu - Do 30.09.10 21:16
Eine dreidimensionale Liste würde ich in etwa so deklarieren:
C#-Quelltext
1:
| List<List<List<string>>> list = new List<List<List<string>>>(); |
Denn eine ArrayList ist in den meisten Fällen von der generischen Liste überholt worden.
So kannst du dann auf ein bestimmtes Element zugreifen:
C#-Quelltext
1:
| list[x][y][z] = "abc"; |
Wenn es nur ein Array sein soll, also ein Datenspeicher, dessen Größe konstant bleibt, geht es noch einfacher:
C#-Quelltext
1:
| string[, ,] array = new string[2, 3, 4]; |
Trashkid2000 - Do 30.09.10 21:34
Aber ich sehe dabei trotzdem nur 2 Dimensionen. Oder irre ich mich?
Naja, mit Deiner ArrayList würde der Zugriff so aussehen:
C#-Quelltext
1:
| string x = (string)(texte[0] as ArrayList)[0]; |
Aber wie schon gesagt, mit einer Menge gecaste.
Also lieber mit einer List:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| List<List<string>> texte2 = new List<List<string>>(); for (int i = 0; i < anzahl1; i++) { List<string> reihe = new List<string>(); for (int j = 0; j < anzahl2; j++) { reihe.Add("Bla"); } texte2.Add(reihe); }
string x2 = texte2[0][0]; |
Aber das hat Yogu ja schon so geschrieben, nur mit einer Dimension mehr.
Marko
Raven280438 - Do 30.09.10 21:40
Hi,
super, funktioniert so wie es soll :)
Vielen Dank
Gruß
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!