Istruzione With...End With (Visual Basic)

Esegue una serie di istruzioni che fa riferimento più volte in un singolo oggetto o struttura.

With object
    [ statements ]
End With

Parti

Termine

Definizione

expression

Necessario.Un'espressione che restituisce un oggetto.L'espressione può essere arbitrariamente complesse e viene valutata solo una volta.L'espressione può restituire qualsiasi tipo di dati, inclusi i tipi elementari.

statements

Opzionale.Una o più istruzioni tra With e End With che possono fare riferimento ai membri di un oggetto che viene generato dalla valutazione expression.

End With

Necessario.Termina la definizione del blocco With.

Note

Utilizzando With...End With, è possibile eseguire una serie di istruzioni in un oggetto specificato senza specificare il nome di più volte l'oggetto.All'interno di un blocco di istruzioni With, è possibile specificare un membro dell'oggetto che inizia con un punto, come se l'oggetto dell'istruzione With lo aveva precedente.

Ad esempio, per modificare più proprietà su un singolo oggetto, inserire le istruzioni di assegnazione di proprietà nel blocco With...End With, facendo riferimento solo una volta all'oggetto anziché una volta per ogni assegnazione di proprietà.

Se i il codice accede allo stesso oggetto in più istruzioni, si utilizzano i vantaggi seguenti utilizzando l'istruzione With :

  • Non è necessario valutare più volte un'espressione complesso o assegnare il risultato a una variabile temporanea per fare riferimento a più volte i membri.

  • Si rende il codice più leggibile eliminando le espressioni di qualificazione ripetitive.

Il tipo di dati expression può essere qualsiasi tipo di classe o di struttura o di un tipo elementare di Visual Basic come Integer.

expression viene valutato una volta, sulla voce nel blocco.Non è possibile riassegnare expression dal blocco With.

All'interno di un blocco With, è possibile accedere ai metodi e le proprietà solo l'oggetto specificato senza qualificarli.Metodi e proprietà di altri oggetti possono essere utilizzati ma è necessario qualificarli con i relativi nomi di oggetto.

È possibile inserire un'istruzione With...End With in un'altra.Istruzioni annidate With...End With possono generare confusione se gli oggetti che facciano riferimento a non sono semplici dal contesto.È necessario fornire un riferimento completo a un oggetto in un blocco esterno With quando l'oggetto viene fatto riferimento dall'interno di un blocco interno With.

Non è possibile creare un ramo in With un blocco di istruzioni dall'esterno del blocco.

A meno che il blocco sia disponibile un ciclo, le istruzioni vengono eseguite solo una volta.È possibile annidare i diversi tipi di strutture di controllo.Per ulteriori informazioni, vedere Strutture di controllo annidate (Visual Basic).

[!NOTA]

È possibile utilizzare la parola chiave With gli inizializzatori di oggetto.Per ulteriori informazioni ed esempi, vedere Inizializzatori di oggetto: tipi denominati e tipi anonimi (Visual Basic) e Tipi anonimi (Visual Basic).

Se si utilizza un blocco With per inizializzare solo le proprietà o campi di un oggetto che è stata creata un'istanza appena, utilizzare un inizializzatore di oggetto anziché.

Esempio

Nell'esempio seguente, ogni blocco With esegue una serie di istruzioni su un singolo oggetto.

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

Nell'esempio annida istruzioni With…End With.All'interno di un'istruzione annidato With, la sintassi fa riferimento all'oggetto 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

Vedere anche

Riferimenti

List<T>

Concetti

Strutture di controllo annidate (Visual Basic)

Inizializzatori di oggetto: tipi denominati e tipi anonimi (Visual Basic)

Tipi anonimi (Visual Basic)