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의 새로운 사용 방법을 설명합니다. 자세한 내용 및 예제를 보려면 개체 이니셜라이저: 명명된 형식과 익명 형식 및 익명 형식을 참조하십시오.