다음을 통해 공유


With...End With 문(Visual Basic)

업데이트: 2007년 11월

하나의 개체나 구조체를 반복적으로 참조하는 일련의 문을 실행합니다.

With object
    [ statements ]
End With

구성 요소

  • object
    필수적 요소입니다. 변수 또는 식입니다. 기본 형식을 포함하여 모든 데이터 형식으로 계산될 수 있습니다.

  • statements
    선택적 요소입니다. object에서 실행하는 With와 End With 사이에 있는 하나 이상의 문입니다.

  • End With
    필수적 요소입니다. 이 With 블록의 정의를 마칩니다.

설명

With...End With 문을 사용하면 해당 개체의 이름을 다시 한정하지 않고도 지정한 개체에 대해 일련의 문을 실행할 수 있습니다. 개체의 정규화 경로가 긴 경우 With...End With 문을 사용하여 성능을 향상시킬 수 있습니다. 또한 With 블록을 사용하면 정규화 경로의 반복적인 입력 및 개체 요소 중 하나를 잘못 입력할 위험성을 줄일 수 있습니다.

예를 들어, 하나의 개체에 있는 여러 속성을 변경하는 경우 속성을 할당할 때마다 해당 개체를 참조하는 대신 With...End With 내에 속성 할당문을 삽입하여 해당 개체를 한 번만 참조합니다.

규칙

  • **데이터 형식.**object의 데이터 형식은 모든 클래스 또는 구조체 형식이거나 Integer와 같은 Visual Basic 기본 형식일 수도 있습니다. .NET Framework에서는 With 블록 내부에 액세스할 수 있는 멤버를 포함하는 클래스 또는 구조체를 가진 모든 기본 형식을 제공합니다.

  • **선언.**With 블록을 입력하기 전에 object를 선언해야 합니다. With 문에 개체를 선언할 수 없습니다.

  • **반복 횟수.**With 블록은 반복문이 아닙니다. 블록 내부에 루프가 없으면 문은 한 번만 실행합니다.

  • 중첩 구조. 하나의 With...End With 구조에 다른 With...End With 구조를 중첩할 수 있습니다. 예제를 보려면 방법: 한 개체에서 여러 동작 수행을 참조하십시오.

    그러나 외부 문의 멤버가 내부 문 내에 마스크되어 있기 때문에 외부 With 블록에 속한 개체의 모든 멤버에 대해 내부 With 블록에 정규화된 개체 참조를 사용해야 합니다.

    또한 하나의 With...End With 구조 내에 다른 종류의 제어 구조를 중첩할 수 있습니다. 자세한 내용은 중첩 제어 구조를 참조하십시오.

  • 구조의 외부로 이동. Visual Basic에서는 With 블록의 외부에 제어를 이동하는 Exit 문(Visual Basic)을 지원하지 않습니다. 모든 문이 실행되기 전에 끝내려면 End With 문에 레이블을 삽입하고 GoTo 문 문을 사용하여 해당 레이블로 분기합니다. 자세한 내용은 방법: Label 문을 참조하십시오.

    With 블록의 외부에서 내부로 또는 내부에서 외부로 제어를 이동할 수 없습니다. 블록의 내부에서 프로시저를 호출할 수 있지만 제어는 다음에 나오는 문으로 돌아갑니다.

  • **다른 개체 액세스.**With 블록이 시작되면 End With 문을 지날 때까지 object를 다시 할당할 수 없습니다. 따라서 해당 개체의 메서드와 속성을 다시 한정하지 않고도 이 메서드와 속성에 액세스할 수 있습니다. 다른 개체의 메서드와 속성을 사용할 수 있지만 메서드와 속성을 해당 개체 이름으로 한정해야 합니다.

예제

다음 예제에서는 With 블록을 사용하여 단일 개체에 대해 일련의 문을 실행합니다. 이 예제에서는 testObject라는 개체가 이미 만들어졌고 참조된 속성을 노출한다고 간주합니다.

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 키워드

Visual Basic 2008에서는 개체 이니셜라이저에서 With의 새로운 사용 방법을 설명합니다. 자세한 내용 및 예제를 보려면 개체 이니셜라이저: 명명된 형식과 익명 형식익명 형식을 참조하십시오.

참고 항목

작업

방법: 한 개체에서 여러 동작 수행

방법: Label 문

개념

중첩 제어 구조

개체 이니셜라이저: 명명된 형식과 익명 형식

익명 형식

참조

Exit 문(Visual Basic)

GoTo 문