Avatar billede ichiban Nybegynder
26. marts 2004 - 18:56 Der er 9 kommentarer og
1 løsning

Copy by value

Hvorledes kopiere jeg et arrays værdier i stedet for referencerne til de værdier?
Det er vist noget med boxing og unboxing.....
Avatar billede arne_v Ekspert
26. marts 2004 - 18:59 #1
Du cloner hvert element i arrayet
Avatar billede ichiban Nybegynder
26. marts 2004 - 20:28 #2
Hej Arne

Kan du evt. uddybe lidt ? Arrayet indeholder bool værdier. Disse kan ikke clones. Normalt er en bool en value-type, men når den er i et array, er det er ref-type.

Tak for hjælpen :)
Jens
Avatar billede arne_v Ekspert
26. marts 2004 - 20:30 #3
Så kan du bare clone
Avatar billede arne_v Ekspert
26. marts 2004 - 20:32 #4
using System;

class MainClass
{
    public static void Main(string[] args)
    {
        bool[] ba1 = { false, false, false };
        bool[] ba2 = (bool[])ba1.Clone();
        ba1[1] = true;
        Console.WriteLine(ba1[1] + " " + ba2[1]);
    }
}
Avatar billede arne_v Ekspert
26. marts 2004 - 20:33 #5
Hvis dit array indeholder objekter og du ønsker at lave en kopi af arrayet med
andre referancer, så skal du clone hver element.
Avatar billede arne_v Ekspert
26. marts 2004 - 20:40 #6
Eksempel på dette:

using System;
using System.Text;

class MainClass
{
    public static void Main(string[] args)
    {
        StringBuilder[] sb1 = { new StringBuilder("a"),
                                new StringBuilder("bb"),
                                new StringBuilder("ccc") };
        StringBuilder[] sb2 = (StringBuilder[])sb1.Clone();
        StringBuilder[] sb3 = new StringBuilder[sb1.Length];
        for(int i = 0; i < sb3.Length; i++)
        {
            sb3[i] = new StringBuilder(sb1[i].ToString());
        }
        sb1[1].Append("x");
        Console.WriteLine(sb1[1] + " " + sb2[1] + " " + sb3[1]);
    }
}
Avatar billede arne_v Ekspert
26. marts 2004 - 20:40 #7
OK ?
Avatar billede ichiban Nybegynder
26. marts 2004 - 20:42 #8
Yes. Problemet lå ikke der
Avatar billede ichiban Nybegynder
26. marts 2004 - 20:43 #9
Men jeg fik lært hvorledes jeg kopiere by value. :)
Avatar billede arne_v Ekspert
26. marts 2004 - 20:47 #10
De tekniske udtryk er:

shallow clone
deep clone
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