Avatar billede mstahlhut Nybegynder
16. december 2011 - 09:45 Der er 1 kommentar og
1 løsning

Kopi af List<> element i C#

Jeg roder lidt med et C# program (.Net 3.5) er er løbet ind i et problem. Jeg opretter en liste af lister af integer arrays:

List<List<int[]>> MyList = new List<List<int[]>>();

Herefter tilføjer jeg 3 elementer:

MyList.Add(new List<int[]>());
MyList.Add(new List<int[]>());
MyList.Add(new List<int[]>());

De 3 elementer tilskrives værdier:

MyList[0].Add(new int[2]);
MyList[0][0][0] = 0;
MyList[0][0][1] = 0;
MyList[1].Add(new int[2]);
MyList[1][0][0] = 0;
MyList[1][0][1] = 1;
MyList[2].Add(new int[2]);
MyList[2][0][0] = 0;
MyList[2][0][1] = 2;

Og nu bliver det mærkeligt. Jeg vil nu tilføje endnu et element til MyList, og dette element skal have samme værdier som element [0]:

My_list.Add(new List<int[]>(My_list[0]));

Når jeg gør det på denne måde er element [0] og element [3] altid det samme. Dvs. ændrer jeg i element [3] ændres element [0] automatisk til det samme. Jeg har forsøgt at skrive element [0] til en temp liste og derefter skrive temp til element [3], men så er begge elementer plus temp listen altid det samme.
Hvordan kan jeg oprette et nyt element i min liste og tilskrive værdier fra et andet element i samme liste, uden at de to elementer i uadskildelige?
Avatar billede mstahlhut Nybegynder
16. december 2011 - 09:48 #1
OBS!

My_list.Add(new List<int[]>(My_list[0]));

skal selvfølgelig være

MyList.Add(new List<int[]>(My_list[0]));
Avatar billede mstahlhut Nybegynder
16. december 2011 - 19:10 #2
Jeg fandt selv en løsning. Tilføjelsen af det nye element skal laves med new List<int[]>() og herefter new int[].
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester