With...End With-Anweisung (Visual Basic)
führt eine Reihe von Anweisungen aus, das wiederholt ein einzelnes Objekt oder eine Struktur bezieht.
With object
[ statements ]
End With
Teile
Begriff |
Definition |
expression |
Erforderlich.Ein Ausdruck, der zu einem - Objekt ausgewertet.Der Ausdruck kann willkürlich komplex und wird nur einmal ausgewertet.Der Ausdruck kann jeden Datentyp, einschließlich grundlegende Typen auswerten. |
statements |
Dies ist optional.Eine oder mehrere Anweisungen zwischen With und End With, die möglicherweise Member eines Objekts zu, das durch die Auswertung von expression erzeugt wird. |
End With |
Erforderlich.Beendet die Definition des With-Blocks. |
Hinweise
Mit With...End With verwenden, können Sie eine Reihe von Anweisungen auf einem angegebenen Objekt ausführen, ohne den Namen des Objekts mehrmals angegeben werden.Innerhalb eines Anweisungsblocks With können Sie einen Member des Objekts angeben beginnend mit einem Punkt, als ob das With-Anweisungsobjekt ihm vorausging.
Um beispielsweise mehrere Eigenschaften für ein einzelnes Objekt zu ändern, legen Sie die Eigenschaftzuweisungsanweisungen innerhalb des Blocks With...End With und das Objekt statt einmal verweisen nur einmal für jede Eigenschaftenzuweisung.
Wenn der Code auf dasselbe Objekt in mehreren Anweisungen zugreift, erhalten Sie die folgenden Vorteile, indem Sie die With-Anweisung verwenden:
Sie müssen nicht, um einen komplexen Ausdruck mehrmals auszuwerten oder das Ergebnis zu einer temporären Variablen zuzuweisen, um deren Member mehrmals zuzugreifen.
Sie führen den Code besser lesbar, indem Sie wiederkehrende qualifizierenden Ausdrücke ausschließen.
Der Datentyp von expression kann eine Klassen- oder Strukturtyp oder sogar ein einfacher Typ des Visual Basic wie Integer sein.
expression wird einmal, nach Eintrag in den Block ausgewertet.Sie können expression nicht aus dem With-Block neu zuweisen.
Innerhalb eines With-Blocks können Sie die Methoden und die Eigenschaften nur des angegebenen Objekts zugreifen, ohne sie zu qualifizieren.Sie können zwar auch Methoden und Eigenschaften anderer Objekte verwenden, diese müssen Sie jedoch mit dem Objektnamen qualifizieren.
Sie können eine With...End With-Anweisung innerhalb einer anderen platzieren.Geschachtelte With...End With-Anweisungen sind verwirrend, wenn die Objekte, auf die verwiesen wird, nicht vom Kontext klar sind.Sie müssen einen vollqualifizierten Verweis auf ein Objekt bereitstellen, das in einem äußeren With-Block ist, wenn das - Objekt aus einem inneren With-Block verwiesen wird.
Sie können nicht in With einen Anweisungsblock verzweigen von außerhalb des Blocks.
Es sei denn, der Block eine Schleife enthält, werden die Anweisungen nur einmal ausgeführt.Sie können verschiedene Arten von Steuerungsstrukturen schachteln.Weitere Informationen finden Sie unter Geschachtelte Steuerungsstrukturen (Visual Basic).
Hinweis |
---|
Sie können das With-Schlüsselwort in den Objektinitialisierer auch verwenden.Weitere Informationen und Beispiele finden Sie unter Objektinitialisierer: Benannte und anonyme Typen (Visual Basic) und Anonyme Typen (Visual Basic). Wenn Sie einen With-Block verwenden, um die Eigenschaften oder Felder eines Objekts nur zu initialisieren, das Sie gerade instanziiert haben, sollten Sie einen Objektinitialisierer, stattdessen zu verwenden. |
Beispiel
Im folgenden Beispiel wird jeder With-Block von Anweisungen in einem einzelnen Objekt.
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
Im folgenden Beispiel With…End With schachtelt Anweisungen.In der geschachtelten With-Anweisung verweist auf die Syntax das innere Objekt an.
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
Siehe auch
Referenz
Konzepte
Geschachtelte Steuerungsstrukturen (Visual Basic)
Objektinitialisierer: Benannte und anonyme Typen (Visual Basic)