C# Loop igennem liste (tilføj og slet items imens)

Tags:    c#

Hej

Jeg har en klasse hvor jeg har en liste som en property.

Har så lavet en metode der skal loop igennem den liste og slette emnet når den har loopet igennem/tilføje nye emner under loopet.

Men hvordan kan jeg få det til at virke ? For hvis jeg bruger et foreach loop så bliver listen jo ikke opdateret når den har loopet igennem et emne ?



7 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 9 karma
Sorter efter stemmer Sorter efter dato
Du skal ikke bruge en foreach, du skal bruge en while. Fx som det her pseudokode

Fold kodeboks ind/udCSharp kode 


Ideen er at du ikke skal inkrementere når du sletter, ellers vil du jo springe noget over. Problemet med foreach løkken er at du fjerner fra den du gennemløber.



Indlæg senest redigeret d. 13.09.2012 14:41 af Bruger #2730
Prøv at vis lidt kode :)
Jeg er ikke helt sikker på jeg forstår hvad du mener. En liste kan du slette og tilføje til ligeså tosset du vil nemlig.



Ja problemet med et foreach-loop er at du betinger allerede du skal gøre dette for hver element i listen, så hvis du undervejs ændrer i listen kan det ikke udføres.

Min løsning ville have været at gemme indekses med en action i en dictionary.
Så kan du for hver element skrive om dette element skal slettes, ændres, flyttes eller ikke gøres noget ved, og når du så er slut med gennemløbet har du en dictionary eller spiseseddel der fortæller dig hvad du skal gøre for at få din færdige liste.

Men Brians løsning må jeg også sige er ret elegant.

@Brian
Jeg har et spørgsmål.. dit ".deletable" forstår jeg ikke helt? Kan du ikke forklare det?




@Brian
Jeg har et spørgsmål.. dit ".deletable" forstår jeg ikke helt? Kan du ikke forklare det?


Det er bare en property jeg har opfundet, den egentlige logik her skal afgøre om det pågældende item skal sletetes : -) det er pseudo-agtigt :-)






@Brian
Jeg har et spørgsmål.. dit ".deletable" forstår jeg ikke helt? Kan du ikke forklare det?


Det er bare en property jeg har opfundet, den egentlige logik her skal afgøre om det pågældende item skal sletetes : -) det er pseudo-agtigt :-)

Okay godt for troede lige der var kommet noget nyt smart i frameworket jeg ikke kendte til. Jeg blev opmærksom på det fordi der var mellemrum og anså det derfor ikke som en propery :P



Okay godt for troede lige der var kommet noget nyt smart i frameworket jeg ikke kendte til. Jeg blev opmærksom på det fordi der var mellemrum og anså det derfor ikke som en propery :P


Det var bare fordi jeg var sjusket og skrev koden direkte ind i tråden :-)
Jeg tror at hvis der var noget smart i Frameworket så ville det nok være at dette kunne løses med et Linq udtryk.




Indlæg senest redigeret d. 15.09.2012 13:26 af Bruger #2730
Jeg tror at hvis der var noget smart i Frameworket så ville det nok være at dette kunne løses med et Linq udtryk.
ja LINQ ville helt klart kunne løse det, men valgte at springe dette over da det uimiddelbart lyder som et skridt længere henne på vejen for trådsstarter :)



t