Gepostet: |
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 |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
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 | |||||||||||
Gepostet: |
|||||||||||
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 | ||||||||||
Gepostet: |
|||||||||||
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 | |||||||||||
Gepostet: |
|||||||||||
Hmm, stimmt. War gestern Abend wohl schon zu dunkel um die Tasten noch richtig zu erkennen. Vielen Dank. | |||||||||||
Zum Seitenanfang | Homepage ICQ | ||||||||||