Construtores e destrutores

Construtores e destrutores são métodos especiais em C# usados para controlar a criação e a destruição de objetos, respetivamente. Eles são essenciais para inicializar recursos e realizar limpezas necessárias durante o ciclo de vida de um objeto.

Construtores

  • Um construtor é um método especial que tem o mesmo nome da classe e não possui tipo de retorno (nem mesmo void).
  • Ele é chamado automaticamente quando um novo objeto da classe é criado.
  • Serve para inicializar os campos do objeto ou executar qualquer configuração necessária no momento da criação.

Exemplo de construtor:

public class Pessoa
{
public string Nome;
public int Idade;

// Construtor
public Pessoa(string nome, int idade)
{
Nome = nome;
Idade = idade;
}
}

Uso:

Pessoa p = new Pessoa("Ana", 30);
  • Se nenhum construtor for definido, o compilador cria automaticamente um construtor padrão sem parâmetros.
  • Construtores podem ser sobrecarregados, ou seja, você pode ter vários construtores com diferentes listas de parâmetros.

Destrutores

  • Um destrutor é um método especial chamado automaticamente antes de um objeto ser removido da memória pelo coletor de lixo do .NET.
  • O seu nome é o mesmo da classe, precedido por um til (~), e não possui parâmetros nem tipo de retorno.
  • O destrutor é usado para liberar recursos não gerenciados (como conexões de arquivo, banco de dados ou memória não gerenciada) que o coletor de lixo não consegue limpar automaticamente.

Exemplo de destrutor:

public class Pessoa
{
// Construtor
public Pessoa() { /* ... */ }

// Destrutor
~Pessoa()
{
// Código de limpeza de recursos
Console.WriteLine("Objeto Pessoa destruído.");
}
}
  • Não podemos chamar explicitamente um destrutor; ele é executado automaticamente pelo .NET quando o objeto se torna inacessível e é coletado como lixo.
  • Não é possível definir destrutores em structs, apenas em classes.
  • Não é possível herdar ou sobrecarregar destrutores.

Resumo

  • Construtores inicializam objetos e são chamados na criação.
  • Destrutores liberam recursos e são chamados automaticamente antes da remoção do objeto da memória, pelo coletor de lixo.
  • Use construtores para garantir que um objeto comece em um estado válido.
  • Use destrutores apenas quando necessário liberar recursos não gerenciados, pois o gerenciamento de memória em C# é feito automaticamente pelo .NET.