Share via


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çãoObservaçã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

List<T>

Conceitos

Estruturas de controle aninhado (Visual Basic)

Inicializadores de objeto: Nomeados e anônimos tipos (Visual Basic)

Tipos anônimos (Visual Basic)