共用方式為


With...End With 陳述式 (Visual Basic)

執行重複參考單一物件或結構的一系列的陳述式。

With object
    [ statements ]
End With

組件

詞彙

定義

expression

必要項。 評估物件的表示。 運算式可以很複雜和只會評估一次。 這個運算式會評估為任何資料型別,包括基礎型別。

statements

選擇項。 在可能參考物件的成員。 expression的評估產生的 With 和 End With 的一個或多個陳述式。

End With

必要項。 結束 With 區塊的定義。

備註

使用 With...End With,您可以在指定物件的一系列的陳述式,而不指定物件多次的名稱。 在 With 陳述式區塊內,您可以指定開始期間的物件成員,如同, With 陳述式物件之前。

例如,變更單一物件的多個屬性,將在 With...End With 區塊內的屬性指派陳述式,一次只能參考物件而不是一次每個屬性指派的。

如果您的程式碼存取在多行陳述式相同的物件,使用 With 陳述式,您具有下列優點:

  • 您不需要評估的複雜運算式多次或指派結果到暫存變數參考它的成員多次。

  • 您可以讓程式碼更容易閱讀消除重複限定的運算式。

expression 資料型別可以是任何類別或結構型別 (甚至是如這類的 Visual Basic 基礎型別 (例如 Integer。

expression 一次評估,在輸入區塊。 您無法重新 expression 從 With 區塊內。

在 With 區塊內,您只能存取指定物件的方法和屬性,而不需限定它們。 您可以使用其他物件的方法和屬性,但必須以其各自的物件名稱來加以限定。

您可以在另一 With...End With 陳述式。 巢狀 With...End With 陳述式可能會造成混淆,如果參考物件從內容不是明確的。 您必須提供給外部 With 區塊的物件的完整參考,當物件參考從內部 With 區塊內時。

您不能分支到 With 陳述式區塊從區塊。

除非區塊包含迴圈,而陳述式則只會執行一次。 您可以巢狀不同種類的控制結構。 如需詳細資訊,請參閱巢狀控制結構 (Visual Basic)

注意事項注意事項

您可以在物件初始設定式也可以使用 With 關鍵字。如需詳細資訊與範例,請參閱 物件初始設定式:具名和匿名型別 (Visual Basic)匿名型別 (Visual Basic)

如果您使用 With 區塊只初始化您具現化物件的屬性或欄位,請考慮使用物件初始設定式。

範例

在下列範例中,每 With 區塊執行單一物件的一系列的陳述式。

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

下列範例 With…End With 巢狀陳述式。 在巢狀 With 陳述式內,語法參考內部物件。

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

請參閱

參考

List<T>

概念

巢狀控制結構 (Visual Basic)

物件初始設定式:具名和匿名型別 (Visual Basic)

匿名型別 (Visual Basic)