Property 문
업데이트: 2007년 11월
속성 이름을 선언하거나 속성 값을 저장하고 검색하는 데 사용되는 속성 프로시저를 선언합니다.
[ <attributelist> ] [ Default ] [ accessmodifier ]
[ propertymodifiers ] [ Shared ] [ Shadows ] [ ReadOnly | WriteOnly ]
Property name ( [ parameterlist ] ) [ As returntype ] [ Implements implementslist ]
[ <attributelist> ] [ accessmodifier ] Get
[ statements ]
End Get
[ <attributelist> ] [ accessmodifier ] Set ( ByVal value As returntype [, parameterlist ] )
[ statements ]
End Set
End Property
구성 요소
attributelist
선택적 요소입니다. 이 특성이나 Get 또는 Set 프로시저에 적용되는 특성의 목록입니다. 특성 목록을 참조하십시오.Default
선택적 요소입니다. 이 속성은 해당 속성이 정의된 클래스 또는 구조체에 대한 기본 속성임을 지정합니다. 기본 속성에는 매개 변수를 사용할 수 있어야 하며, 속성 이름을 지정하지 않고 해당 속성을 설정하고 검색할 수 있습니다. 속성을 Default로 선언하면 속성 또는 해당 속성 프로시저에서 Private을 사용할 수 없습니다.accessmodifier
Property 문과 Get 및 Set 문 중 하나에 지정할 수 있습니다. 다음 중 하나일 수 있습니다.Visual Basic의 액세스 수준을 참조하십시오.
propertymodifiers
선택적 요소이며 다음 중 하나일 수 있습니다.MustOverride Overrides
NotOverridable Overrides
Shared
선택적 요소입니다. Shared(Visual Basic)를 참조하십시오.Shadows
선택적 요소입니다. Shadows를 참조하십시오.ReadOnly
선택적 요소입니다. ReadOnly(Visual Basic)를 참조하십시오.WriteOnly
선택적 요소입니다. WriteOnly를 참조하십시오.name
필수적 요소이며 속성 이름입니다. 선언 요소 이름을 참조하십시오.parameterlist
선택적 요소입니다. 이 속성의 매개 변수를 나타내는 지역 변수 이름의 목록이며 Set 프로시저의 추가 매개 변수도 가능합니다. 매개 변수 목록을 참조하십시오.returntype
OptionStrict가 On이면 필수적 요소입니다. 이 속성에서 반환되는 값의 데이터 형식입니다.Implements
선택적 요소입니다. 이 속성이 하나 이상의 속성을 구현함을 나타냅니다. 즉, 이 속성의 포함하는 클래스 또는 구조체에 의해 구현된 인터페이스에 정의된 각 속성을 구현합니다. Implements 문을 참조하십시오.implementslist
Implements문을 사용할 경우 필수적 요소입니다. 구현될 속성의 목록입니다.implementedproperty [ , implementedproperty ... ]
각 implementedproperty의 구문과 구성 요소는 다음과 같습니다.
interface.definedname
구성 요소
설명
interface
필수적 요소입니다. 이 속성의 포함하는 클래스 또는 구조체에 의해 구현된 인터페이스 이름입니다.
definedname
필수적 요소입니다. 속성을 interface에 정의할 때 사용되는 이름입니다.
Get
속성이 WriteOnly로 표시된 경우가 아니면 필수적 요소입니다. 속성의 값을 반환하는 데 사용하는 Get 속성 프로시저를 시작합니다.statements
선택적 요소입니다. Get 또는 Set 프로시저 내에 실행할 문 블록입니다.End Get
Get 속성 프로시저를 끝냅니다.Set
속성이 ReadOnly로 표시된 경우가 아니면 필수적 요소입니다. 속성의 값을 저장하는 데 사용하는 Set 속성 프로시저를 시작합니다.End Set
Set 속성 프로시저를 끝냅니다.End Property
이 속성의 정의를 끝냅니다.
설명
Property 문은 속성 선언을 정의합니다. 속성에는 Get 프로시저(읽기 전용), Set 프로시저(쓰기 전용) 또는 둘 다(읽기/쓰기)를 포함할 수 있습니다.
Property는 모듈 수준에서만 사용할 수 있습니다. 즉, 속성에 대한 선언 컨텍스트는 클래스, 구조체, 모듈 또는 인터페이스여야 하며 소스 파일, 네임스페이스, 프로시저 또는 블록이 될 수 없습니다. 자세한 내용은 선언 컨텍스트 및 기본 액세스 수준을 참조하십시오.
기본적으로 속성은 공용 액세스를 사용합니다. Property 문에서 액세스 한정자를 사용하여 속성의 액세스 수준을 조정할 수 있으며 필요한 경우에 해당 속성 프로시저의 액세스 수준을 보다 제한적인 액세스 수준으로 조정할 수 있습니다.
Visual Basic은 속성을 할당하는 동안 Set 프로시저에 매개 변수를 전달합니다. Set에 대한 매개 변수를 지정하지 않으면 IDE(통합 개발 환경)에서는 value라는 암시적 매개 변수를 사용합니다. 이 매개 변수는 속성에 할당될 값을 저장합니다. 일반적으로 이 값을 전용 지역 변수에 저장하고 Get 프로시저가 호출될 때마다 이 값을 반환합니다.
규칙
혼합된 액세스 수준. 읽기/쓰기 속성을 정의하는 경우 Get 또는 Set 프로시저 중 하나에 다른 액세스 수준을 지정할 수 있지만 두 프로시저 모두에 다른 액세스 수준을 지정할 수는 없습니다. 이렇게 하려면 프로시저 액세스 수준이 속성의 액세스 수준보다 제한적이어야 합니다. 예를 들어, 속성이 Friend로 선언된 경우 Set 프로시저를 Public이 아닌 Private으로 선언할 수 있습니다.
ReadOnly 또는 WriteOnly 속성을 정의하는 경우 각각의 단일 속성 프로시저인 Get 또는 Set은 모든 속성을 나타냅니다. 이러한 프로시저에 다른 액세스 수준을 선언할 수 없습니다. 다른 액세스 수준을 선언하면 속성에 두 가지 액세스 수준이 설정됩니다.
반환 형식. Property 문은 반환하는 값의 데이터 형식을 선언할 수 있습니다. 열거형, 구조체, 클래스 또는 인터페이스의 이름 또는 모든 데이터 형식을 지정할 수 있습니다.
returntype을 지정하지 않은 경우 속성은 Object를 반환합니다.
구현. 속성이 Implements 키워드를 사용하는 경우 포함하는 클래스 또는 구조체에 대한 Implements 문은 해당 Class 문 또는 Structure 문 바로 다음에 나와야 합니다. Implements 문에 implementslist에 지정된 각 인터페이스가 포함되어야 합니다. 그러나 인터페이스가 definedname에서 Property를 정의할 때 사용하는 이름이 name에서의 이 속성의 이름과 같을 필요는 없습니다.
동작
속성 프로시저에서 반환. Get 또는 Set 프로시저가 호출 코드로 반환되는 경우 해당 프로시저를 호출한 문 다음에 오는 문에서 실행이 계속됩니다.
Exit Property 및 Return 문은 속성 프로시저를 즉시 끝냅니다. 프로시저 내의 임의의 위치에 여러 개의 Exit Property 및 Return 문을 사용할 수 있으며 Exit Property 문과 Return 문을 혼합하여 사용할 수 있습니다.
반환 값. Get 프로시저에서 값을 반환하려면 속성 이름에 값을 할당하거나 Return 문에 값을 포함합니다. 다음 예제에서는 속성 이름 quoteForTheDay에 반환 값을 할당한 다음 Exit Property 문을 사용하여 해당 값을 반환합니다.
Private quoteValue As String = "No quote assigned yet."
ReadOnly Property quoteForTheDay() As String Get quoteForTheDay = quoteValue Exit Property End Get End Property
name에 값을 할당하지 않고 Exit Property를 사용하면 Get 프로시저에서 속성의 데이터 형식에 대한 기본값을 반환합니다.
Return 문은 동시에 Get 프로시저 반환 값을 할당하고 프로시저를 종료합니다. 다음 예제에서는 이러한 방법을 보여 줍니다.
Private quoteValue As String = "No quote assigned yet."
ReadOnly Property quoteForTheDay() As String Get Return quoteValue End Get End Property
예제
다음 예제에서는 클래스에서 속성을 선언합니다.
Class Class1
' Define a local variable to store the property value.
Private propertyValue As String
' Define the property.
Public Property prop1() As String
Get
' The Get property procedure is called when the value
' of a property is retrieved.
Return propertyValue
End Get
Set(ByVal value As String)
' The Set property procedure is called when the value
' of a property is modified. The value to be assigned
' is passed in the argument to Set.
propertyValue = value
End Set
End Property
End Class