Avatar billede maude Nybegynder
05. juni 2007 - 06:02 Der er 4 kommentarer og
1 løsning

ArrayList af Arrays

Jeg har følgende kode:

int[] linie = new int[2];
ArrayList kurv = new ArrayList();

if (Session["Kurv"] != null)
  kurv = (ArrayList)Session["Kurv"];

bool fundet = false;
for(int i = 0; i < kurv.Count; i++)

    linie = (int[])kurv[i];
    if ((int)linie[0] == id)
    { 
      fundet = true;
      (int)linie[1] += 1;
    }
}

if (!fundet)
{
  linie[0] = id;
  linie[1] = 1;
  kurv.Add(linie);
}
           
Session["Kurv"] = kurv;


Har jeg her et problem med at kurv.Add(linie) faktisk er pas-by-ref? Min arrayliste indeholder efter et par gennemløb flere forekomster af det samme array(linie).

Er løsningen to arraylister eller ....?
Avatar billede erikjacobsen Ekspert
05. juni 2007 - 08:36 #1
Du skal vel bare sige
  linie = new int[2];
hver gang du går i gang med en ny omgang.
Avatar billede pidgeot Nybegynder
05. juni 2007 - 08:44 #2
Umiddelbart vil jeg mene en HashTable el. lign. var bedre i denne situation. På den måde slipper du for at løbe gennem ArrayListen manuelt, da du bare kan bruge id'et som key.
Avatar billede maude Nybegynder
05. juni 2007 - 12:23 #3
Kender kun til hashtabeller i teorien og slet ikke i C#, men jeg kan se ideen. Måske næste version.

Erik: utroligt hvilken forskel en enkelt lille linie kan gøre. Smid et svar til dine point.
Avatar billede erikjacobsen Ekspert
05. juni 2007 - 12:39 #4
Jeg samler ikke på point, tak. Og du har ret i at du ellers ville lave flere referencer til det samme array.
Avatar billede maude Nybegynder
05. juni 2007 - 12:47 #5
Stor tak.
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