Na programação orientada a objetos em C#, os métodos construtores são fundamentais para inicializar objetos durante sua criação. Quando um objeto é instanciado usando a palavra-chave new, o construtor correspondente é invocado automaticamente, garantindo que os campos do objeto sejam configurados adequadamente. Se essa inicialização for negligenciada, o estado do objeto pode ficar inconsistente, afetando a execução subsequente.
Os métodos construtores em C# possuem características distintas que os diferenciam dos métodos comuns:
- O nome do construtor deve corresponder exatamente ao nome da classe que o define, sem tipo de retorno explícito (nem mesmo
void). - Construtores são chamados pelo sistema durante a instanciação do objeto e não podem ser invocados manualmente.
- Sua principal função é atribuir valores iniciais aos membros do objeto.
Por padrão, o compilador C# fornece um construtor sem parâmetros para a classe. No entanto, ao definir explicitamente um ou mais construtores, esse construtor padrão deixa de ser fornecido. Construtores podem ser sobrecargados, pemritindo diferentes formas de inicialização com base nos parâmetros passados.
A seguir, um exemplo demonstra o uso de construtores em C#. A classe Pessoa define múltiplos construtores para inicializar seus campos de maneiras variadas.
using System;
namespace ExemploConstrutor { public class Pessoa { private string nome; private int idade; private string residencia;
// Construtor sem parâmetros
public Pessoa() { }
// Construtor com dois parâmetros
public Pessoa(string nomeCompleto, int anos)
{
Nome = nomeCompleto;
Idade = anos;
Residencia = "Não especificada";
}
// Construtor com três parâmetros
public Pessoa(string nomeCompleto, int anos, string endereco)
{
Nome = nomeCompleto;
Idade = anos;
Residencia = endereco;
}
// Propriedade para Nome
public string Nome
{
get { return nome; }
set { nome = value; }
}
// Propriedade para Idade com validação
public int Idade
{
get { return idade; }
set
{
if (value >= 0 && value <= 120)
idade = value;
else
{
Console.WriteLine("Idade fora do intervalo válido, definida como 25.");
idade = 25;
}
}
}
// Propriedade para Residência
public string Residencia
{
get { return residencia; }
set { residencia = value; }
}
}
}
</div>No prograam principal, diferentes instâncias de `Pessoa` são criadas utilizando os construtores disponíveis.
<div class="code-example">```
using System;
namespace ExemploConstrutor
{
class ProgramaPrincipal
{
static void Main(string[] args)
{
// Instanciando com construtor de três parâmetros
Pessoa individuo1 = new Pessoa("Maria Silva", 30, "São Paulo, Brasil");
// Instanciando com construtor de dois parâmetros
Pessoa individuo2 = new Pessoa("João Oliveira", 40);
// Instanciando com construtor sem parâmetros
Pessoa individuo3 = new Pessoa();
individuo3.Nome = "Ana Santos";
individuo3.Idade = 22;
individuo3.Residencia = "Rio de Janeiro, Brasil";
Console.WriteLine("Dados do indivíduo 1:");
Console.WriteLine($"Nome: {individuo1.Nome}");
Console.WriteLine($"Idade: {individuo1.Idade}");
Console.WriteLine($"Residência: {individuo1.Residencia}");
Console.WriteLine("\nDados do indivíduo 2:");
Console.WriteLine($"Nome: {individuo2.Nome}");
Console.WriteLine($"Idade: {individuo2.Idade}");
Console.WriteLine($"Residência: {individuo2.Residencia}");
Console.WriteLine("\nDados do indivíduo 3:");
Console.WriteLine($"Nome: {individuo3.Nome}");
Console.WriteLine($"Idade: {individuo3.Idade}");
Console.WriteLine($"Residência: {individuo3.Residencia}");
}
}
}