www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

Daten merken
Auto-Login
Registrieren
 
Online
niemand
 
Forumsuche
Suche nach:

Logo - DracheC#-Forum

mrfrost

Gepostet:
10.07.2003 16:28

Mehrdimensionale ArrayListen  
Ich möchte wie bei einem mehrdimensionalen Array auf eine mehrdimensionale ArrayListe zugreifen.

z.B.:
objekt[0][0]

was aber zu dem Fehler führt:
error CS0021: Indizierung mit [] zu einem Ausdruck des Typs 'object' kann nicht angewendet werden.

object[0].ToString() sagt mir, dass es sich um den Typ ArrayList handelt. Wie kann ich dann also auf das erste Elemnt von object[0] zugreifen?

Grüße,
Frank
Smilie
Zum Seitenanfang    
 
Pulpapex

Gepostet:
14.07.2003 21:04

   
Da fallen mir drei Möglichkeiten ein.

1. Casten:
Sieht ein bisschen blöd aus.

// ArrayList arrayList;
object val = ((ArrayList)arrayList[0])[0];

2. foreach-Schleife:
Wenn auf alle Elemente zugegriffen werden soll und der Zugriff nicht zufällig,
sondern sequenziell erfolgen kann.

// ArrayList arrayList;
foreach(ArrayList subList in arrayList) {
object val = subList[0];
}

3. Eigene Collection für ArrayLists implementieren.
In SharpDevelop gibt es dafür einen Wizard .. in VS wahrscheinlich auch.

// ArrayListCollection arrayList;
object val = arrayList[0][0];


Gruß
Pulpapex
Zum Seitenanfang    
 
Jammni

Gepostet:
14.07.2003 21:48

   
Also, die Antwort von Pulpapex ist ok, aber vielleicht hier mal ein kleiner Exkurs zu mehrdimensionalen Arrays:

Mehrdimensionale Arrays - Erzeugung

int[,,] point = new int [2,3,4]
- das erzeugt ein dreidimensionales Array das den Raum in X-Richtung nach 2, in y-Richtung nach 3 und in z-Richtung nach 4 aufspannt.
int[,] point = new int[,]{(1,2,3,4)(5,6,7,8)}
- das erzeugt ein zweidimensionales Array. Das Element [0|0] enthält den Wert 1, das Element [0|1] den Wert 5. Es werden als erst die Werte der ersten Dimension angegeben und dann die Werte der zweiten Dimension.

Der Zugriff erfolgt dann mit point[x,y]. Also point[1, 3] liefert den Wert 8 zurück. Programmierer mit Pascal/Delphi-Hintergrund werden diese Syntax schon etwas kennen.
Zum Seitenanfang Homepage   ICQ    
 
Pulpapex

Gepostet:
14.07.2003 23:56

   
Da hast du aber paar Fehler drin, Jammni.

Für die innere Tupel-Initialisierung verwendest du runde Klammern. Ausserdem fehlt das Komma dazwischen.
int[,] point = new int[,] {{1, 2, 3, 4}, {5, 6, 7, 8}};

Und point[0, 1] liefert nicht 5, sondern 2.
Zum Seitenanfang    
 
Jammni

Gepostet:
15.07.2003 12:11

   
Hmm, stimmt. War gestern Abend wohl schon zu dunkel um die Tasten noch richtig zu erkennen. Vielen Dank.
Zum Seitenanfang Homepage   ICQ