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.
