VB .NET -  Inicializadores de objetos : Tipos nomeados e anônimos.


 Neste artigo vou apresentar uma aplicação VB .NET que cria um calendário via código.   

Há um só corpo e um só Espírito, como também fostes chamados em uma só esperança da vossa vocação;
Um só Senhor, uma só fé, um só batismo;
Um só Deus e Pai de todos, o qual é sobre todos, e por todos e em todos vós.
Efésios 4:4-6

 

Os inicializadores de objeto permitem especificar as propriedades de um objeto complexo usando uma única expressão. Eles podem ser usados ​​para criar instâncias de tipos nomeados e de tipos anônimo

 

As declarações de instâncias de tipos nomeados e anônimos podem parecer quase idênticos , mas seus efeitos não são os mesmos.

 

Cada categoria tem habilidades e restrições próprias.

 

O exemplo a seguir mostra uma maneira conveniente de declarar e inicializar uma instância de uma classe chamada, Cliente , usando uma lista de inicialização do objeto.

 

Observe que o nome da classe é especificado após a palavra-chave New :

 


     Dim clienteNomeado = New Cliente With { .Nome = "Macoratti"}
 
Um tipo anônimo não tem nenhum nome utilizável. Portanto uma instanciação de um tipo anônimo não pode incluir um nome de classe :

      Dim clienteAnonimo = New With { .Nome = "Jose Carlos"}
 

Os requisitos e os resultados das duas declarações não são os mesmos.

Para clienteNomeado , uma classe de cliente que tem uma propriedade nome já deve existir, e a declaração cria uma instância dessa classe.

Para clienteAnonimo , o compilador define uma nova classe que tem uma propriedade, uma string chamada Nome, e cria uma nova instância dessa classe.

Tipos nomeados

O inicializadores de objeto fornecem uma maneira simples para chamar o construtor de um tipo e , em seguida, definir os valores de algumas ou de todas as propriedades em uma única instrução.

 

O compilador invoca o construtor apropriado para a instrução : o construtor padrão se nenhum argumento é apresentado , ou um construtor com parâmetros, se um ou mais argumentos são enviados.

 

Depois disso , as propriedades especificadas são inicializadas na ordem em que são apresentados na lista de inicializador .

Cada inicialização na lista do inicializador consiste na atribuição de um valor inicial a um membro da classe.

 

Os nomes e tipos de dados dos membros são determinadas quando a classe é definida. Nos exemplos a seguir , a classe Cliente deve existir e deve ter membros Nome e Cidade que podem aceitar valores de strings:

 


      Dim cliente As Cliente  = New Cliente With { .Nome = "Macoratti", .Cidade = "Santos"}
 

 

Podemos obter o mesmo resultado usando o seguinte código:

 


   Dim cliente1 As New Cliente With { .Nome = "Macoratti", .Cidade = "Santos" }

 

 

Essas declarações são equivalentes para o exemplo que cria um objeto Cliente usando o construtor padrão e então especifica os valores iniciais para as propriedades Nome e  Cidade usando a instrução With:

 

Dim cliente2 As New Cliente()

With cliente2
    .Nome = "Macoratti"
    .Cidade = "Santos"
End With

 

Se a classe Cliente contém um construtor parametrizada que permite que você envie um valor para Nome, por exemplo, você também pode inicializar o objeto Cliente da seguintes formas:

 


Dim cliente3 As Cliente  = New Cliente("Macoratti") With { .Cidade = "Santos"}

' ou

Dim cliente4 As New Cliente("Macoratti") With { .Cidade = "Santos"}

 

 

Você não tem que inicializar todas as propriedades, como mostra o código a seguir:

 


      Dim clienteAnonimo = New With { .Nome = "Macoratti"}
 

 

Porém, a lista de inicialização não pode ser vazia. Propriedades não inicializadas retém seus valores padrão:
 


      Dim clienteAnonimo = New With { .Nome = "Macoratti"}
 

 

Inferência de tipos com tipos nomeados

 

Você pode otimizar o código para a declaração de cliente1 combinando inicializadores de objetos e inferência de tipo local.

 

Esse recurso permite que você omita a cláusula As na declaração de variável.

 

O tipo de dados da variável é inferido a partir do tipo do objeto que é criado pela atribuição.

 

No exemplo a seguir o tipo de cliente6 é Cliente:

 


    Dim cliente6 = New Cliente With { .Nome = "Macoratti", .Cidade = "Santos"}
 

 

Apenas algumas considerações finais

Porque a palavra da cruz é loucura para os que perecem; mas para nós, que somos salvos, é o poder de Deus.
Porque está escrito: Destruirei a sabedoria dos sábios, E aniquilarei a inteligência dos inteligentes.

1 Coríntios 1:18,19

 

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : 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 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

 

Referências:


José Carlos Macoratti