Autor Beitrag
Raven280438
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 99



BeitragVerfasst: Do 30.09.10 20:55 
Hi,

ich habe eine 3-dimensionale ArrayList mit verschiedenen Texten gefüllt.

Wie kann ich jetzt ein bestimmtes Element zugreifen?

Folgendes hab ich probiert:
ausblenden C#-Quelltext
1:
2:
3:
ArrayList reihe = new ArrayList();
reihe = texte.IndexOf(i);
String texte_text = reihe.IndexOf(j);

Das funktioniert aber nicht ;)
Trashkid2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 99



BeitragVerfasst: Do 30.09.10 21:14 
Hi,

also ich erstelle die ArrayList auf folgendem Wege:
ausblenden 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);   // text ist ein String
   }
   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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Do 30.09.10 21:16 
Eine dreidimensionale Liste würde ich in etwa so deklarieren:

ausblenden 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:

ausblenden 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:

ausblenden C#-Quelltext
1:
string[, ,] array = new string[234];					

Für diesen Beitrag haben gedankt: Raven280438
Trashkid2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: 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:
ausblenden C#-Quelltext
1:
string x = (string)(texte[0as ArrayList)[0];					
Aber wie schon gesagt, mit einer Menge gecaste.

Also lieber mit einer List:
ausblenden 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");   // text ist ein String
  }
  texte2.Add(reihe);
}

string x2 = texte2[0][0];


Aber das hat Yogu ja schon so geschrieben, nur mit einer Dimension mehr.

Marko

Für diesen Beitrag haben gedankt: Raven280438
Raven280438 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 99



BeitragVerfasst: Do 30.09.10 21:40 
Hi,

super, funktioniert so wie es soll :)

Vielen Dank


Gruß