Avatar billede Skynet Mester
02. maj 2008 - 21:19 Der er 3 kommentarer og
2 løsninger

forstå fejlmeddelelsen

Hej, jeg får ingen fejl i VS 2008, men når jeg afvikler programmet og bruger funktionen stopper den, og fortæller at der er en ændring i samlingen og at optælling muligvis ikke bliver udført...

Jeg har meget svært ved at forstå fejlmeddelelsen og kan ikke gennemskue hvorfor VS ikke vil afvikle koden?



  public void slet(DateTime dato1, string navn)
        {
               
            foreach (Reservering en_reservering in reserveringsliste)

                if (en_reservering.PropertyDato == dato1 && en_reservering.PropertyReserveringsnavn == navn && ((en_reservering.PropertyTilstand == "godkendt") || en_reservering.PropertyTilstand == "Temp"))
                {
                    reserveringsliste.Remove(en_reservering);
                }

        }
Avatar billede Slettet bruger
02. maj 2008 - 21:28 #1
Sikkert noget med at du fjerner elementer i den samling du jo kører i en for each - jeg vil mene du skal samle op på hvad der skal væk og så gøre det når du er færdig med løkken.
Avatar billede aaberg Nybegynder
02. maj 2008 - 22:24 #2
Når du manipulerer med en liste imens du looper igennem den, kan du ikke bruge en foreach. Brug i stedet en almindelig for-løkke, og loop baglens.

public void slet(DateTime dato1, string navn)
{
    for (int index = reserveringsliste.Count - 1; index >= 0; index--)
    {
        Reservering en_reservering = reserveringsliste[index];
        if (en_reservering.PropertyDato == dato1 && en_reservering.PropertyReserveringsnavn == navn && ((en_reservering.PropertyTilstand == "godkendt") || en_reservering.PropertyTilstand == "Temp"))
        {
            reserveringsliste.Remove(en_reservering);
        }
    }
}

Grunden til at du skal loope baglens er, at hvis du looper forlens og du fjerne en item ved et bestem index, da peger indexen på den næste item, og derefter tæller du indexen op. Du vil altså springe en item over i din løkke, hver gang du fjerner en Item fra listen. En anden fejl der opstår når du looper forlens er, at når du fjerner items, bliver længden af listen kortere, derfor vil løkken til sidst prøve at tilgå indexer som ikke findes i listen, hvilket vil kaste fejl. Alt dette undgår du ved at loope baglens.
Avatar billede Skynet Mester
03. maj 2008 - 00:11 #3
ok, mange tak.. Giver du et svar så jeg kan give points
Avatar billede aaberg Nybegynder
03. maj 2008 - 00:45 #4
Giv bertie halvdelen. :-)
Avatar billede Slettet bruger
03. maj 2008 - 14:10 #5
Det takker jeg for :-)
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