With...End With-Anweisung (Visual Basic)

Aktualisiert: November 2007

Führt eine Reihe von Anweisungen aus und verweist mehrfach auf ein einzelnes Objekt oder eine einzelne Struktur.

With object
    [ statements ]
End With

Bestandteile

  • object
    Erforderlich. Variable oder Ausdruck. Kann einen beliebigen Datentyp ergeben, u. a. auch einen elementaren Datentyp.

  • statements
    Optional. Eine oder mehrere Anweisungen zwischen With und End With, die für object ausgeführt werden.

  • End With
    Erforderlich. Beendet die Definition des With-Blocks.

Hinweise

Mit With...End With können Sie eine Reihe von Anweisungen für ein bestimmtes Objekt ausführen, ohne den Namen des Objekts immer wieder neu angeben zu müssen. Wenn der Qualifizierungspfad für das Objekt lang ist, kann durch die Verwendung von With...End With die Leistung verbessert werden. Mit einem With-Block wird außerdem die Anzahl wiederholter Eingaben des Qualifizierungspfads und das Risiko einer falschen Schreibweise eines seiner Elemente verringert.

Wenn Sie beispielsweise mehrere verschiedene Eigenschaften eines einzelnen Objekts ändern möchten, fügen Sie die Anweisungen für die Eigenschaftenzuweisungen in die With...End With-Anweisung ein. Sie müssen dann nicht in jeder Eigenschaftenzuweisung auf das Objekt verweisen, sondern es genügt ein einziger Verweis auf das Objekt.

Regeln

  • Datentypen. Der Datentyp object kann ein beliebiger Klassen- oder Strukturtyp und sogar ein elementarer Visual Basic-Typ, z. B. Integer, sein. .NET Framework unterstützt alle elementaren Typen für Klassen oder Strukturen, die über Member verfügen, auf die in einem With-Block zugegriffen werden kann.

  • Deklaration. Sie müssen object deklarieren, bevor Sie den With-Block eingeben. Die Deklaration kann nicht in der With-Anweisung erfolgen.

  • Anzahl von Iterationen. Ein With-Block ist keine iterative Konstruktion. Sofern der Block keine Schleife enthält, werden die Anweisungen nur einmal ausgeführt.

  • Schachteln von Strukturen. Sie können With...End With-Strukturen schachteln, indem Sie eine Struktur in eine andere einfügen. Ein Beispiel finden Sie unter Gewusst wie: Ausführen von mehreren Aktionen für ein Objekt.

    Da die Member der äußeren Anweisungen in den inneren Anweisungen verdeckt sind, müssen Sie für alle Member eines Objekts in einem äußeren With-Block einen vollqualifizierten Objektverweis in einem inneren With-Block angeben.

    Sie können auch unterschiedliche Arten von Steuerungsstrukturen in einer anderen Steuerungsstruktur schachteln. Weitere Informationen finden Sie unter Geschachtelte Steuerungsstrukturen.

  • Übertragung aus der Struktur. Visual Basic unterstützt nicht die Exit-Anweisung (Visual Basic) zum Übergeben der Steuerung aus einem With-Block. Wenn das Programm beendet werden soll, bevor alle Anweisungen ausgeführt wurden, verwenden Sie eine Zeilenmarke für eine End With-Anweisung, und verzweigen Sie darauf mit der GoTo-Anweisung. Weitere Informationen finden Sie unter Gewusst wie: Bezeichnen von Anweisungen.

    Die Steuerung kann nicht von außerhalb eines With-Blocks in diesen oder aus dem Block nach außen übertragen werden. Sie können im Block eine Prozedur aufrufen, doch die Steuerung wird an die nächste Anweisung übergeben.

  • Zugreifen auf andere Objekte. Wenn Sie einen With-Block ausführen, können Sie object erst dann erneut zuweisen, wenn die End With-Anweisung übergeben wurde. Das bedeutet, dass Sie nur auf die Methoden und Eigenschaften des angegebenen Objekts zugreifen können, ohne sie zu kennzeichnen. Sie können zwar auch Methoden und Eigenschaften anderer Objekte verwenden, diese müssen Sie jedoch mit dem Objektnamen qualifizieren.

Beispiel

Im folgenden Beispiel wird ein With-Block verwendet, um eine Reihe von Anweisungen für ein einzelnes Objekt auszuführen. Im Beispiel wird davon ausgegangen, dass das Objekt testObject bereits erstellt wurde und die Eigenschaften, auf die verwiesen wird, verfügbar macht.

With testObject
    .Height = 100
    .Text = "Hello, World"
    .ForeColor = System.Drawing.Color.Green
    .Font = New System.Drawing.Font(.Font, _
        System.Drawing.FontStyle.Bold)
End With

With-Schlüsselwort in Objektinitialisierern

Visual Basic 2008 führt eine neue Verwendung von With in Objektinitialisierern ein. Weitere Informationen und Beispiele finden Sie unter Objektinitialisierer: Benannte und anonyme Typen und Anonyme Typen.

Siehe auch

Aufgaben

Gewusst wie: Ausführen von mehreren Aktionen für ein Objekt

Gewusst wie: Bezeichnen von Anweisungen

Konzepte

Geschachtelte Steuerungsstrukturen

Objektinitialisierer: Benannte und anonyme Typen

Anonyme Typen

Referenz

Exit-Anweisung (Visual Basic)

GoTo-Anweisung