mahlzeit,
also folgendes problem:
ich habe eine ArrayList in der rund 3,5k einträge sind
von dieser, in eriner klasse gespeicherten ArrayListe, will ich in einer methode eine kopie haben.
klapt wunderbar
nur wen ich dan in der kopie einen eintrag lösche dan wird dieser auch in der orginalen in der klasse gespeicherten ArrayListe der wert gelöscht....
suboptimal
hier die entsprechenden codschnipsel:
Klasse
public ArrayList GetResources()
{
return Resources;
}
metode
ArrayList sSearchArrayList = new ArrayList();
sSearchArrayList = klasse.GetResources();
for (int sCount = 0; sCount < sSearchArrayList.Count; sCount++)
{
if (<ifanweisung>)
{
sSearchArrayList.RemoveAt(sCount);
sCount--;
}
}
bitte wo leigt mein denkfehler ?
MfG Paul
Du übergibst keine Kopie sondern eine Referenz auf dein Originalobjekt.
Das ist wie mit den Pointern in C. Du must ein neues Objekt erstellen und dann Clone() oder CopyTo() aufrufen.
... no comment. genau 5 sekunden vor deiner antwort hatte ich die idee. und genau 5 sekunden nach dem lesen deiner antwort ist mir dan folgendes eingefallen zu testn
sSearchArrayList = (ArrayList)kWorkOn.GetResources().Clone();
MfG Paul
Hallo el_panter,
BTW: vergiss ArrayList und verwende nur noch List<T>. Analog für alle anderen Collections.
herbivore
zu dem zeitpunkt als die ArrayListe entstanden ist wuste ich nix von List
und jetzt wos läuft, naja ich zitire mal "don't stop a running system" oder so^^
privat und in folgeprojekte werde ich die ArrayList jedoch keiner weiteren beachtung schenken ( dies aber schon seit einiger zeit);
... wiso hab ich jetzt nach der klammer enn semikolon gesezt 😁
MfG Paul
Eigentlich heißt es "Never touch a running system." 8)
So einfach wie möglich, aber nicht einfacher. [Albert Einstein]
take a look at
* baer-torsten.de
* codinghints