Desconstrução de Objetos
A desconstrução de objetos é um recurso do C# que permite extrair os valores das propriedades de um objeto de forma concisa e legível. Isso é especialmente útil quando você deseja trabalhar com os valores de um objeto sem precisar acessar cada propriedade individualmente.
Sintaxe Básica
A sintaxe básica para desconstruir um objeto envolve o uso da palavra-chave var
seguida por parênteses contendo as variáveis que receberão os valores das propriedades do objeto. Aqui está um exemplo simples:
class Pessoa {
public string Nome { get; set; }
public int Idade { get; set; }
}
Pessoa pessoa = new Pessoa();
pessoa.Nome = "João";
pessoa.Idade = 30;
var (nome, idade) = pessoa;
Console.WriteLine($"Nome: {nome}, Idade: {idade}");
// Saída: Nome: João, Idade: 30
Neste exemplo, a classe Pessoa
possui duas propriedades: Nome
e Idade
. Ao criar uma instância de Pessoa
e atribuir valores às suas propriedades, podemos usar a sintaxe de desconstrução para extrair esses valores diretamente em variáveis nome
e idade
.
Requisitos para Desconstrução
Para que a desconstrução funcione, a classe deve implementar um método chamado Deconstruct
. Este método define como as propriedades do objeto serão mapeadas para as variáveis na desconstrução. Aqui está um exemplo de como implementar o método Deconstruct
:
class Pessoa {
public string Nome { get; set; }
public int Idade { get; set; }
public void Deconstruct(out string nome, out int idade) {
nome = Nome;
idade = Idade;
}
}
Pessoa pessoa = new Pessoa();
pessoa.Nome = "João";
pessoa.Idade = 30;
var (nome, idade) = pessoa;
Console.WriteLine($"Nome: {nome}, Idade: {idade}");
Neste exemplo, o método Deconstruct
é definido na classe Pessoa
, permitindo que a desconstrução funcione corretamente.
Desconstrução com Propriedades Opcionais
Você também pode definir propriedades opcionais na desconstrução, permitindo que algumas variáveis sejam ignoradas. Isso é feito usando o caractere _
para indicar que uma variável não será usada. Aqui está um exemplo:
var (nome, _) = pessoa;
Console.WriteLine($"Nome: {nome}");
Neste exemplo, apenas a variável nome
é usada, enquanto a variável para idade
é ignorada.
Desconstrução em Métodos
A desconstrução também pode ser usada em métodos para retornar múltiplos valores de forma clara e legível. Aqui está um exemplo:
(string nome, int idade) ObterDadosPessoa() {
return ("Maria", 25);
}
var (nome, idade) = ObterDadosPessoa();
Console.WriteLine($"Nome: {nome}, Idade: {idade}");
Neste exemplo, o método ObterDadosPessoa
retorna uma tupla com o nome e idade da pessoa. A desconstrução é usada para extrair esses valores diretamente em variáveis nome
e idade
.
Conclusão
A desconstrução de objetos é uma funcionalidade poderosa do C# que melhora a legibilidade e a concisão do código ao trabalhar com objetos. Ao implementar o método Deconstruct
em suas classes, você pode aproveitar essa funcionalidade para extrair facilmente os valores das propriedades dos objetos.
A desconstrução é usada para extrair esses valores diretamente em variáveis nome
e idade
.