Visual Basic 9 : Object and Array Initializers

by Jenner Maciejewsky 5. maio 2008 07:12

Object and Array Initializers ou Inicializadores de Objetos e Arrays, foi inserido no Visual Basic 9.0 como parte dos novos recursos necessários na implementação do LINQ. Esse recurso permite que ao instanciar um Objeto seja também possível a sua inicialização de suas propriedades.

Nas versões anteriores quando se desejava trabalhar com um determinado objeto, primeiro era necessário instanciar o objeto e em seguida realizar a inicialização das propriedades deste objeto.

Considerando a classe abaixo:

          Exemplo de código em VB para criar uma classe:

Public Class Pais
        Dim _nome As String
        Dim _area As Double
        Dim _populacao As Long

        Public Property Nome() As String
            Get
                Return _nome
            End Get
            Set(ByVal value As String)
                _nome = value
            End Set
        End Property

        Public Property Area() As Double
            Get
                Return _area
            End Get
            Set(ByVal value As Double)
                _area = value
            End Set
        End Property

        Public Property Populacao() As Long
            Get
                Return _populacao
            End Get
            Set(ByVal value As Long)
                _populacao = value
            End Set
        End Property
    End Class



Nas versões anteriores do Visual Basic, veja que era necessário criar um nova instancia da classe em seguida realizar a inicialização do mesmo:

         Exemplo em VB.Net (8.0) para inicializar uma objeto:

 

Dim paises As New Pais()

    paises.Nome = "Brasil"
    paises.Area = 8514877
    paises.Populacao = 186767705

 

Inicializando Objeto



Com a nova versão é possível unir os dois passos acima e um único. Veja como ficaria o exemplo acima no Visual Basic 2008.

Exemplo em Visua Basic 2008 (9.0) utilizando Obect Initializer: 

Dim paises as  New Pais With {.Nome = "Brasil", _
                                                   .Area = 8514877, _
                                                   .Populacao = 186767705}

Observe que reduzimos em um única linha de código o que tinhamos escrito em 4. Para que o Visual Basic entenda o uso deste recursos é necessário utilizar With, sem essa Keyword não será possível inicializar um objeto no momento de instanciá-lo.

Não devemos confundir o With para inicializar um objeto com o With..End With Statement, recurso que exisita nas versões anteriores para evita a repetir a referência a um mesmo objeto . Mais detalhes em With...End With Statement (Visual Basic)

Inicializando Objeto Array

Com a Inicialização de Objetos é possível inicializar da mesma forma um Array como mostra o exemplo abaixo:

Exemplo em Visual Basic 2008 (9.0) utilizando Object Array Initializer:

Dim paises() = { _
                    New Pais With {.Nome = "Palau", .Area = 458, _
                                   .Populacao = 16952}, _
                    New Pais With {.Nome = "Monaco", .Area = 1.9, _
                                   .Populacao = 31719}, _
                    New Pais With {.Nome = "Belize", .Area = 22960, _
                                   .Populacao = 219296}, _
                    New Pais With {.Nome = "Madagascar",
                                   .Area = 587040,
                                   .Populacao = 13670507
                                  }
                }

Inicializando Array

Assim como é possível inicializar Objetos e Arrays de Objetos, também é possível fazer o mesmo com Arrays, seguindo a mesma sintaxe.

Veja o exemplo:

Exemplo em Visual Basic 2008 (9.0) Inicializando Array:

dim times() as string = { "Flamengo", "São Paulo", _                          
                                     "Palmeiras", "Cruzeiro"}

Era isso que eu tinha para falar sobre Object and Array Initializers, tenha bons estudos.

Recursos:FV_Novidades

Links:

How to: Declare an Object by Using an Object Initializer
VB.NET 9.0: Object and Array Initializers
Will Visual Basic 9.0 Have Collection Initializers? 



Jenner Maciejewsky Rocha
MVP Visual Basic






Share this post :

Tags: , ,

Blog | VBNET

Os comentários estão fechados

Posts Antigos

Awards