C# - Conceitos : Construtor (revisitado) - IV


Hoje vamos rever um conceito muito importante na linguagem C#: O Construtor. 

Continuando a terceira parte do artigo vamos apresentar outros conceitos importantes sobre construtores.

Até o momento vimos que os construtores são usados para atribuir valores a membros da classe.

Será que existe um conceito oposto ao conceito de Construtor na linguagem C# ?

Sim, existe, são os Deconstructors.

Nota: Não confunda Deconstructors com Destructors, os conceitos são bem diferentes.

Deconstructors (C# 7)

A versão 7.0 da linguagem C# introduziu o padrão deconstructor ou deconstructor.

Um desconstrutor (também chamado de método de desconstrução) age como um oposto ao construtor: Considerando que um construtor normalmente pega um conjunto de valores (como parâmetros) e os atribui a campos/propriedades da classe, um desconstrutor faz o inverso e atribui os campos/propriedades de volta a um conjunto de variáveis.

Um método de desconstrução deve ser chamado Desconstruct e deve ter um ou mais parâmetros do tipo out.

Então, o que um Desconstrutor faz é desconstruir o objeto de volta às suas partes originais. E, podemos controlar como o objeto pode ser desconstruído.

A seguir temos uma classe Aluno com duas propriedades e um construtor que aceita dois parâmetros : nome e sobrenome;

Como podemos adicionar um Deconstructor a essa classe ?

Simples...

Percebeu como é fácil ????

Basta fazer o seguinte:

Nota: Lembrando como funciona out : O out atua em um sentido, ele passa o valor do parâmetro (o que está dentro do método) para o argumento;

Muuito bem... E como usamos um Deconstructor ? 

A seguir temos como chamar o Deconstrutor :

No código criamos uma instância da classe Aluno e a seguir chamamos o Deconstructor : var (nome, sobrenome) = aluno

Note que o Deconstrutor esta sendo invocado usando a sintaxe usada na Tuple da linguagem C#. Abaixo o resultado obtido:

Podemos também usar a seguinte sintaxe para chamar o Deconstructor:

Se as variáveis nas quais você esta deconstruindo já estiverem definidas basta usar: (nome, sobrenome) = aluno

Podemos também ter múltiplos Deconstructors na classe com diferentes parâmetros:

Abaixo um exemplo de como chamar cada deconstrutor:

Um Deconstructor não precisa esta diretamente anexado na classe. Podemos implementar um Deconstructor como um método de extensão.

Vamos fazer isso para o exemplo:

1- Crie ume classe estática chamada MinhaClasseEstaticaComDestructor;
2- Crie um método estático com a mesma visibilidade da classe chamado Deconstruct;
3- No primeiro parãmetro especifique o tipo Aluno no qual o método vai operar e use o modificador this;

Defina o código conforme mostrado abaixo:

Pronto , agora é só usar...

Pegue o código do projeto aqui: CShp_Construtor4.zip

"Com o ouvir dos meus ouvidos ouvi, mas agora te vêem os meus olhos.
Por isso me abomino e me arrependo no pó e na cinza. "

Jó 42:5,6

Veja os Destaques e novidades do SUPER DVD Visual Basic : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti