Istruzione With...End With (Visual Basic)
Consentono di eseguire una serie di istruzioni contenenti riferimenti ripetuti a un unico oggetto o struttura.
With object
[ statements ]
End With
Parti
Argomento |
Definizione |
object |
Obbligatoria. Variabile o espressione. Consente di restituire qualsiasi tipo di dati, compresi i tipi di base. |
statements |
Facoltativa. Una o più istruzioni inserite tra With e End With in esecuzione su object. |
End With |
Obbligatoria. Termina la definizione del blocco With. |
Note
With...End With consente di eseguire una serie di istruzioni su un oggetto specificato senza che sia necessario riqualificare il nome dell'oggetto. Se il percorso di qualificazione relativo all'oggetto è lungo, è possibile utilizzare With...End With per migliorare le prestazioni. Un blocco With riduce, inoltre, l'inserimento ripetitivo del percorso di qualificazione e il rischio di errori di digitazione di uno degli elementi.
Per modificare varie proprietà in un singolo oggetto, ad esempio, è possibile inserire le istruzioni di assegnazione delle proprietà all'interno dell'istruzione With...End With, facendo riferimento all'oggetto una sola volta anziché in ogni assegnazione.
Regole
Tipi di dati. Il tipo di dati object può essere qualsiasi tipo di classe o struttura o anche un tipo elementare di Visual Basic come Integer. .NET Framework supporta tutti i tipi elementari con classi o strutture, che dispongono di membri ai quali è possibile accedere all'interno di un blocco With.
Dichiarazione. È necessario dichiarare object prima di accedere al blocco With. Non è possibile dichiararlo nell'istruzione With.
Numero di iterazioni. Un blocco With non è una costruzione iterativa. A meno che all'interno del blocco non sia presente un ciclo, le istruzioni vengono eseguite una sola volta.
Strutture annidate. È possibile annidare strutture With...End With inserendo una struttura all'interno di un'altra. Per un esempio, vedere Procedura: eseguire più operazioni su un oggetto (Visual Basic).
Tuttavia, poiché i membri delle istruzioni di livello inferiore sono nascosti nelle istruzioni di livello superiore, è necessario fornire un riferimento completo all'oggetto qualificato in un blocco With interno per ogni membro di un oggetto in un blocco With esterno.
È inoltre possibile annidare strutture di controllo di tipo diverso inserendone una all'interno di un altra. Per ulteriori informazioni, vedere Strutture di controllo annidate (Visual Basic).
Trasferimento all'esterno della struttura. Visual Basic non supporta Istruzione Exit (Visual Basic) per trasferire il controllo all'esterno di un blocco With. Se si desidera uscire prima che tutte le istruzioni siano state eseguite, inserire un'etichetta nell'istruzione End With e utilizzare Istruzione GoTo per creare un ramo nell'etichetta. Per ulteriori informazioni, vedere Procedura: etichettare le istruzioni (Visual Basic).
Non è possibile trasferire il controllo dall'esterno di un blocco With al suo interno o viceversa. È possibile chiamare una routine dall'interno del blocco, ma il controllo torna all'istruzione successiva.
Accesso ad altri oggetti. Dopo aver inserito un blocco With, l'oggetto object non può essere riassegnato sino a quando non è stata superata l'istruzione End With. L'accesso ai metodi e alle proprietà senza qualifica è quindi limitato al solo oggetto specificato. Metodi e proprietà di altri oggetti possono essere utilizzati ma è necessario qualificarli con i relativi nomi di oggetto.
Esempio
Nell'esempio riportato di seguito il blocco With viene utilizzato per eseguire una serie di istruzioni su un singolo oggetto. Nell'esempio si presuppone che l'oggetto testObject sia già stato creato e che le proprietà a cui fa riferimento siano esposte.
With testObject
.Height = 100
.Text = "Hello, World"
.ForeColor = System.Drawing.Color.Green
.Font = New System.Drawing.Font(.Font,
System.Drawing.FontStyle.Bold)
End With
Parola chiave With negli inizializzatori di oggetto
La parola chiave With può essere utilizzata anche negli inizializzatori di oggetto. Per ulteriori informazioni ed esempi, vedere Inizializzatori di oggetto: tipi denominati e tipi anonimi (Visual Basic) e Tipi anonimi (Visual Basic).
Vedere anche
Attività
Procedura: eseguire più operazioni su un oggetto (Visual Basic)
Procedura: etichettare le istruzioni (Visual Basic)
Riferimenti
Istruzione Exit (Visual Basic)
Concetti
Strutture di controllo annidate (Visual Basic)
Inizializzatori di oggetto: tipi denominati e tipi anonimi (Visual Basic)