06. december 2004 - 08:52Der er
12 kommentarer og 1 løsning
return statement
Når jeg returner noget fra en funktion, stopper den så der?
Jeg tænker på hvordan man rydder op efter sig, så man får frigivet al den hukommelse man kan. Jeg har mange funktioner som roder med datetime, dataset, og adapter. Hvordan gør man det bedst når man gerne vil frigive de forskellige ting?
Skal man bare sætte sine DataSet's = null? Når man forlader en funktion, kan GC så opsamle den hukommelse de forskellige i den lige afsluttet funktion?
Hvis du har sagt xxx.Open() bør du også sige xxx.Close() (og tilsvarende for andre symmetriske operationer). Ud over det skal du ikke foretage dig noget for lokale variabler.
hvad så hvis jeg kaster med dataset mellem mine funktioner? Så når jeg exit'er den ene funktion, så nedlægger den dataset'et som var lokalt, og så vil GC gøre resten af arbejdet?
mange gang er man bedre hjulpet ved at bruge et "using" statement... som erikjacobsen skriver skal man bruge xxx.Close hvis man har brugt xxx.Open - men f.eks database connections kan man putte i et using statement og så vil den automatisk blive lukket på blokken forlades - uanset hvordan det gøres... f.eks. via return eller man smider en exception osv.
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.