Hej, Inget konstigt med det. Objekt är av referenstyp till skillnad från vanliga variabler som är av värdetyp. som föregående person sa så blir de samma om man kör a2 = a1; Det finns ett enklare sätt Tänk även på att om objekten i ArrayListen är referenstyper blir det ännu knepigare! Läs på om värdetyper, referenstyper, grund kopiering (shallow copy) och djup kopiering (deep copy). Intressant. Tack sa mycket for hjalpen! För att göra en grund kopia används lämpligen den inbyggda metoden Clone():Arraylist problem
Jag har stott pa det konstigaste problemet nagonsin!
I medlemmen, Medlem1, deklareras en ArrayList a1.
Medlem1 anropar Medlem2, som ar void. a1 ar ett av Medlem2s argument.
I Medlem2 skapas ArrayListen a2 och jag later a2 = a1.
Det sjuka ar att nar operationer utfors pa a2 sa paverkar detta a1, som ju bara existerar i Medlem1! Och ArrayListerna har ju inte ens samma namn!
Nagra forslag pa tankbara orsaker till detta mysterium?Sv: ????????????????????????????????????????????????????????
a2 = a1 gör att a2 blir en "länk" till samma objekt, det kopieras inte.
Om du vill kopiera arrayn finns det diverse copy-funktioner.Sv:????????????????????????????????????????????????????????
enklast är nog att loopa över a1 och ta ut elementen från den och spara dem i a2.
int i = 0;
while(i < a1.Count)
{
a2.add(a1.Items[i]);
}Sv: ????????????????????????????????????????????????????????
ArrayList a2 = new ArrayList(a1);Sv:????????????????????????????????????????????????????????
Sv: ????????????????????????????????????????????????????????
Sv: Arraylist problem
a2=(ArrayList)a1.Clone();
Vill man göra en djup kopia får man implementera IClonable för den klass vars objekt finns i arrayen.