Ir para o conteúdo

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.