/ / O que o objeto de configuração para um nulo faz? - c #

O que o objeto de configuração para um nulo faz? - c #

Esta linha de código aloca um espaço de memória no heap para o objeto foo

var foo =new object();

Essa linha de código vai liberar isso?

foo=null;

Ou é apenas eliminar a referência a um local de memória no heap.

Respostas:

3 para resposta № 1

Apenas remove a referência. O objeto em si é lixo coletado quando o tempo de execução considera adequado e é, na verdade, independente de a referência ser ou não apagada.


2 para resposta № 2

Em C #, todos os objetos são coletados como lixo, você não pode "deletar" eles.

Quando a última referência a um determinado objeto cai fora do escopo, o objeto é passível de coleção. Você pode certamente anular quantas referências você puder encontrar, mas o objeto permanecerá vivo enquanto qualquer referência ainda sustenta que objeto.

Então, definindo foo=null; basta remover a referência.

A coleta de lixo consiste nas seguintes etapas:

  1. O coletor de lixo procura objetos gerenciados que são referenciado no código gerenciado.
  2. O coletor de lixo tenta finalizar objetos que não são referenciado.
  3. O coletor de lixo libera objetos que não são referenciados e recupera sua memória.

É importante entender como os coletores de lixo funcionam Classe GC

Exemplo

// 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;