Probleme mit mehreren ArrayLists in einer ArrayList
-
Hallo miteinander,
aufgrund deren unbekannter Größe habe ich mich dazu entschlossen anstatt einem verzweigten Array eine verzweigte Arraylist für die Speicherung meiner Daten zu verwenden (Mehrere Pixel vom Datentyp Point in einer ArrayList als Regionen und eine übergeordnete Arraylist mit allen Regionen), doch leider klappt das nicht wie ich es mir vorstelle.
Wenn ich beispielsweise eine ArrayList mit dem Namen TempRegion in die Arraylist RegionArrList hinzufügen will
RegionArrList.Add(TempRegion);
klappt das wunderbar, nur wenn ich nun
TempRegion.Clear();
aufrufe, ist plötzlich auch die ArrayList in RegionArrList leer...
Wie kann das sein? Wird die nicht by Value gespeichert wenn ich sage ArrayList.Add()?? Auch der restliche Funktionsteil funktioniert leider nicht so wie er soll, wobei ich mir da nicht sicher bin ob das nicht am oberen Fehler liegt:
else if (TempRegion.Count >= 3) //Wenn mindestens drei Punkte nacheinander zu einer Region gehören { BreakLoop = false; foreach (ArrayList myRegion in RegionArrList) { foreach (Point myPoint1 in TempRegion) { foreach (Point myPoint2 in myRegion) { if (Math.Abs(myPoint1.X - myPoint2.X) <= 1 && Math.Abs(myPoint1.Y - myPoint2.Y) <= 1) { myRegion.AddRange(TempRegion); BreakLoop = true; break; } } if (BreakLoop == true) break; } if (BreakLoop == true) break; } if (BreakLoop == false) { RegionArrList.Add(TempRegion); } TempRegion.Clear(); }
Über einen Tipp würde ich mich sehr freuen!
Viele Grüße
Micha
-
...ersetzt man das TempRegion.Clear() gegen ein new TempRegion=ArrayList() funktioniert alles einwandfrei...
Interessant wäre jetzt, weshalb..?
-
mutzu2210 schrieb:
...ersetzt man das TempRegion.Clear() gegen ein new TempRegion=ArrayList() funktioniert alles einwandfrei...
Interessant wäre jetzt, weshalb..?
ääääähhh...
TempRegion = new ArrayList();
natürlich
-
Statt der veralteten ArrayList solltest du besser die generische Klasse List<> benutzen (sofern du nicht noch mit .NET 1.1 herumhantierst), da sie typsicher ist (und damit das umständliche Casten beim Auslesen entfällt).
-
Th69 schrieb:
Statt der veralteten ArrayList solltest du besser die generische Klasse List<> benutzen (sofern du nicht noch mit .NET 1.1 herumhantierst), da sie typsicher ist (und damit das umständliche Casten beim Auslesen entfällt).
Alles klar, werd ich umstellen wenn alles so läuft wie ich es mir wünsche. Mal schauen, ob Suchen und Ersetzen da funktioniert.
Vielen Dank für den Hinweis!