Com...Terminam com a instrução (Visual Basic)
Executa uma série de instruções repetidamente que se refere a um único objeto ou estrutura.
With object
[ statements ]
End With
Partes
Termo |
Definição |
expression |
Obrigatório.Uma expressão que avalia para um objeto.A expressão pode ser arbitrariamente complexo e é calculada apenas uma vez.A expressão pode avaliar a qualquer tipo de dados, inclusive tipos elementares. |
statements |
Opcional.Uma ou mais instruções entre e WithEnd With que podem referenciar membros de um objeto que é gerado pela avaliação de expression. |
End With |
Obrigatório.Finaliza a definição do bloco With. |
Comentários
Usando With...End With, você pode executar uma série de instruções em um objeto especificado sem especificar o nome do objeto várias vezes.Dentro de um bloco de declaração de With , você pode especificar um membro objeto que começa com um ponto, como se o objeto de instrução de With o precedeu.
Por exemplo, para alterar várias propriedades em um único objeto, coloque as declarações de atribuição de propriedade dentro do bloco de With...End With , consultando o objeto apenas uma vez em vez de uma vez para cada atribuição de propriedade.
Se seu código acessa o mesmo objeto em várias instruções, você obtém os seguintes benefícios usando a instrução de With :
Você não precisa avaliar várias vezes uma expressão complexa ou de atribuir o resultado a uma variável temporário para referir-se a várias vezes seus membros.
você faz seu código mais legível eliminando expressões aplicáveis repetitivas.
O tipo de dados de expression pode ser qualquer tipo de classe ou estrutura ou até mesmo um tipo elementar do Visual Basic como Integer.
expression é avaliado uma vez, em cima de entrada no bloco.Você não pode reatribuir expression de dentro do bloco de With .
Dentro de um bloco de With , você pode acessar os métodos e propriedades de apenas o objeto especificado sem qualificá-los.Você pode usar métodos e propriedades dos outros objetos, mas você deverá qualificá-los com seus nomes de objeto.
Você pode colocar uma instrução de With...End With dentro da outra.As instruções aninhados de With...End With podem ser confusas se os objetos que estão sendo não são referenciados no contexto.Você deve fornecer uma referência totalmente qualificada a um objeto que está em um bloco externo de With quando o objeto é referenciado de dentro de um bloco interno de With .
Você não pode ramificar em um bloco de declaração de With fora do bloco.
A menos que o bloco contém um loop, as instruções são executadas somente uma vez.Você pode aninhar diferentes tipos de estruturas de controle.Para obter mais informações, consulte Estruturas de controle aninhado (Visual Basic).
Observação |
---|
Você pode usar a palavra-chave de With em inicializadores de objeto também.Para mais informações e um exemplo, consulte Inicializadores de objeto: Nomeados e anônimos tipos (Visual Basic) e Tipos anônimos (Visual Basic). Se você estiver usando um bloco de With para inicializar somente as propriedades ou campos de um objeto que você criou uma instância de, considere usar um inicializador de objeto em vez de isso. |
Exemplo
Em o exemplo, cada bloco de With executa uma série de instruções em um único objeto.
Private Sub AddCustomer()
Dim theCustomer As New Customer
With theCustomer
.Name = "Coho Vineyard"
.URL = "http://www.cohovineyard.com/"
.City = "Redmond"
End With
With theCustomer.Comments
.Add("First comment.")
.Add("Second comment.")
End With
End Sub
Public Class Customer
Public Property Name As String
Public Property City As String
Public Property URL As String
Public Property Comments As New List(Of String)
End Class
O exemplo aninha instruções de With…End With .Dentro da instrução aninhada de With , a sintaxe refere-se ao objeto interno.
Dim theWindow As New EntryWindow
With theWindow
With .InfoLabel
.Content = "This is a message."
.Foreground = Brushes.DarkSeaGreen
.Background = Brushes.LightYellow
End With
.Title = "The Form Title"
.Show()
End With
Consulte também
Referência
Conceitos
Estruturas de controle aninhado (Visual Basic)
Inicializadores de objeto: Nomeados e anônimos tipos (Visual Basic)