/ / Čo robí objekt na nulu? - c #

Čo robiť nastavenie objektu na hodnotu null? - c #

Tento riadok kódu alokuje priestor na halde na objekt foo

var foo =new object();

Bude tento riadok kódu uvoľniť?

foo=null;

Alebo je to len vymazanie odkazu na pamäťové miesto na halde.

odpovede:

3 pre odpoveď č. 1

Stačí odstrániť odkaz. Samotný objekt je zhromažďovaný odpad, keď vidí, že beh je správny a je skutočne nezávislý od toho, či sa referencia vymazáva alebo nie.


2 pre odpoveď č. 2

V C # sa všetky objekty zhromažďujú, môžete ich "t" vymazať.

Keď posledný odkaz na daný objekt spadá mimo rozsah, objekt je zodpovedný kolekcie. Môžete určite nulovať toľko odkazov, ako môžete nájsť, ale objekt bude zostať nažive tak dlho, ako akýkoľvek odkaz stále platí objekt.

Tak nastavenie foo=null; stačí odstrániť odkaz.

Zber odpadu pozostáva z nasledujúcich krokov:

  1. Zberač odpadkov vyhľadáva spravované objekty, ktoré sú v spravovanom kóde.
  2. Zberač odpadkov sa pokúša dokončiť objekty, ktoré nie sú odvoláva.
  3. Zberač odpadkov uvoľňuje objekty, ktoré nie sú uvedené a spätne získava svoju pamäť.

Je dôležité pochopiť, ako fungujú zberače odpadu Trieda GC

príklad

// Set a break-point here to see that foo = null.
// However, the compiler considers it "unassigned."
// and generates a compiler error if you try to
// use the variable.
object foo;
// Now foo has a value.
foo = new object();
// Set foo to null again. The object it referenced
// is no longer accessible and can now be garbage-collected.
foo = null;