Share via


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

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

With object
    [ statements ]
End With

組件

詞彙

定義

object

必要項。 變數或運算式。 可以評估為任何資料型別,包括基礎型別。

statements

選擇項。 介於 With 和 End With 之間且會在 object 上執行的一個或多個陳述式。

End With

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

備註

With...End With 允許您在指定之物件上執行一系列的陳述式,而不需重新限定該物件的名稱。 如果物件的限定性條件路徑太長,則可使用 With...End With 改善效能。 With 區塊也可以減少重複輸入限定性條件路徑的需要,並降低將其中一個項目拼錯的機會。

例如,若要變更單一物件的數個不同屬性,請將屬性指派陳述式 (Assignment Statement) 置入 With...End With 中,因此您只需參考該物件名稱一次,而不必在每次指派屬性時都要加以參考。

規則

  • 資料型別:object 的資料型別可以是任何類別或結構型別,甚至是如 Integer 這類的 Visual Basic 基礎型別。 .NET Framework 可透過類別或結構支援所有基礎型別,這些類別或結構的成員可以在 With 區塊內加以存取。

  • 宣告:在進入 With 區塊之前,必須先宣告 object。 您無法在 With 陳述式中宣告它。

  • 反覆運算次數:With 區塊不是反覆運算結構型式。 除非區塊內有迴圈 (Loop),否則陳述式只會執行一次。

  • 巢狀結構:您可以將一個結構置於另一個結構內,以便將 With...End With 結構巢狀化。 如需範例,請參閱 HOW TO:在物件上執行多項動作 (Visual Basic)

    然而,由於外部陳述式的成員在內部陳述式中會受到遮罩,所以,若要參考外部 With 區塊中物件的任何成員,您必須在內部 With 區塊中提供完整的物件參考。

    您可以將不同類型的控制結構以巢狀結構互置。 如需詳細資訊,請參閱巢狀控制結構 (Visual Basic)

  • 轉移到結構外:Visual Basic 不支援 Exit 陳述式 (Visual Basic) 將控制權轉移到 With 區塊外。 如果想要在執行完所有陳述式之前退出,請在 End With 陳述式中放置一個標籤 (Label),然後使用 GoTo 陳述式將程式分支至此標籤。 如需詳細資訊,請參閱 HOW TO:標記陳述式 (Visual Basic)

    您無法將控制權從 With 區塊外轉移到區塊內,也無法將控制權從區塊內轉移到區塊外。 您可以從區塊內呼叫程序,但控制權會返回緊接在後的陳述式。

  • 存取其他物件:一旦進入 With 區塊之後,在傳遞 End With 陳述式之前,您都無法重新指派 object。 因此,在不限定物件的方法和屬性的情況下,您只能存取指定物件的方法和屬性。 您可以使用其他物件的方法和屬性,但必須以其各自的物件名稱來加以限定。

範例

下列範例會使用 With 區塊,在單一物件上執行一系列的陳述式。 這個範例會假設已經建立 testObject 物件,且該物件會公開 (Expose) 所參考的屬性。

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 關鍵字

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

請參閱

工作

HOW TO:在物件上執行多項動作 (Visual Basic)

HOW TO:標記陳述式 (Visual Basic)

參考

Exit 陳述式 (Visual Basic)

GoTo 陳述式

概念

巢狀控制結構 (Visual Basic)

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

匿名型別 (Visual Basic)