다음을 통해 공유


Property 문

속성 이름과 속성 값을 저장하고 검색하는 데 사용되는 속성 프로시저를 선언합니다.

구문

[ <attributelist> ] [ Default ] [ accessmodifier ]
[ propertymodifiers ] [ Shared ] [ Shadows ] [ ReadOnly | WriteOnly ] [ Iterator ]
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
- or -
[ <attributelist> ] [ Default ] [ accessmodifier ]
[ propertymodifiers ] [ Shared ] [ Shadows ] [ ReadOnly | WriteOnly ]
Property name ( [ parameterlist ] ) [ As returntype ] [ Implements implementslist ]

부분

  • attributelist

    선택 사항. 이 속성이나 Get 또는 Set 프로시저에 적용되는 특성 목록입니다. 특성 목록을 참조하세요.

  • Default

    선택 사항. 이 속성이 해당 속성이 정의된 클래스 또는 구조체의 기본 속성임을 지정합니다. 기본 속성은 매개 변수를 허용해야 하며 속성 이름을 지정하지 않고도 설정하고 검색할 수 있습니다. 속성을 Default로 선언하면 속성이나 해당 속성 프로시저에서 Private을 사용할 수 없습니다.

  • accessmodifier

    Property 문과 GetSet 문 중 최대 하나에서는 선택 사항입니다. 다음 중 하나일 수 있습니다.

    Access levels in Visual Basic을 참조하세요.

  • propertymodifiers

    선택 사항. 다음 중 하나일 수 있습니다.

  • Shared

    선택 사항. 공유를 참조하세요.

  • Shadows

    선택 사항. Shadows를 참조하세요.

  • ReadOnly

    선택 사항. ReadOnly를 참조하세요.

  • WriteOnly

    선택 사항. 쓰기 전용을 참조하세요.

  • Iterator

    선택 사항. 반복기를 참조하세요.

  • name

    필수입니다. 속성의 이름입니다. Declared Element Names을 참조하세요.

  • parameterlist

    선택 사항. 이 속성의 매개 변수와 Set 프로시저의 가능한 추가 매개 변수를 나타내는 지역 변수 이름 목록입니다. 매개 변수 목록을 참조하세요.

  • returntype

    Option StrictOn인 경우 필수입니다. 이 속성에서 반환된 값의 데이터 형식입니다.

  • Implements

    선택 사항. 이 속성이 하나 이상의 속성을 구현함을 나타냅니다. 각 속성은 이 속성을 포함하는 클래스 또는 구조체에 의해 구현된 인터페이스에 정의됩니다. Implements 문을 참조하세요.

  • implementslist

    Implements가 제공된 경우 필수입니다. 구현 중인 속성 목록입니다.

    implementedproperty [ , implementedproperty ... ]

    implementedproperty에는 다음과 같은 구문과 요소가 있습니다.

    interface.definedname

    요소 설명
    interface 필수입니다. 이 속성을 포함하는 클래스 또는 구조체에 의해 구현된 인터페이스의 이름입니다.
    definedname 필수입니다. interface에 속성이 정의된 이름입니다.
  • Get

    선택 사항. 속성이 ReadOnly로 표시된 경우 필수입니다. 속성 값을 반환하는 데 사용되는 Get 속성 프로시저를 시작합니다. 이 Get 문은 자동으로 구현된 속성과 함께 사용되지 않습니다.

  • statements

    선택 사항. Get 또는 Set 프로시저 내에서 실행할 문 블록입니다.

  • End Get

    Get 속성 프로시저를 종료합니다.

  • Set

    선택 사항. 속성이 WriteOnly로 표시된 경우 필수입니다. 속성 값을 저장하는 데 사용되는 Set 속성 프로시저를 시작합니다. 이 Set 문은 자동으로 구현된 속성과 함께 사용되지 않습니다.

  • End Set

    Set 속성 프로시저를 종료합니다.

  • End Property

    이 속성의 정의를 종료합니다.

설명

Property 문은 속성 선언을 소개합니다. 속성에는 Get 프로시저(읽기 전용), Set 프로시저(쓰기 전용) 또는 둘 다(읽기-쓰기)가 있을 수 있습니다. 자동으로 구현된 속성을 사용할 때 및 Set 프로시저를 생략 Get 할 수 있습니다. 자세한 내용은 자동으로 구현된 속성을 참조 하세요.

클래스 수준에서만 Property를 사용할 수 있습니다. 이는 속성의 선언 컨텍스트가 클래스, 구조체, 모듈 또는 인터페이스여야 하며 원본 파일, 네임스페이스, 프로시저 또는 블록이 될 수 없음을 의미합니다. 자세한 내용은 선언 컨텍스트 및 기본 액세스 수준을 참조하세요.

기본적으로 속성은 공용 액세스를 사용합니다. Property 문의 액세스 한정자를 사용하여 속성의 액세스 수준을 조정할 수 있으며 선택적으로 해당 속성 프로시저 중 하나를 더 제한적인 액세스 수준으로 조정할 수 있습니다.

Visual Basic은 속성 할당 중에 매개 변수를 Set 프로시저에 전달합니다. Set에 대한 매개 변수를 제공하지 않으면 IDE(통합 개발 환경)은 value라는 암시적 매개 변수를 사용합니다. 이 매개 변수는 속성에 할당될 값을 보유합니다. 일반적으로 이 값을 전용 지역 변수에 저장하고 Get 프로시저가 호출될 때마다 반환합니다.

규칙

  • 혼합된 액세스 수준 읽기-쓰기 속성을 정의하는 경우 선택적으로 Get 또는 Set 프로시저에 대해 서로 다른 액세스 수준을 지정할 수 있지만 둘 다 지정할 수는 없습니다. 이렇게 하면 프로시저 액세스 수준이 속성의 액세스 수준보다 더 제한적이어야 합니다. 예를 들어, 속성이 Friend로 선언된 경우 Set 프로시저 Private은 선언할 수 있지만 Public은 선언할 수 없습니다.

    ReadOnly 또는 WriteOnly 속성을 정의하는 경우 단일 속성 프로시저(각각 Get 또는 Set)는 모든 속성을 나타냅니다. 해당 프로시저에 대해 다른 액세스 수준을 선언할 수 없습니다. 그렇게 하면 해당 속성에 대해 두 가지 액세스 수준이 설정되기 때문입니다.

  • 반환 형식. Property 문은 반환되는 값의 데이터 형식을 선언할 수 있습니다. 모든 데이터 형식이나 열거형, 구조체, 클래스 또는 인터페이스의 이름을 지정할 수 있습니다.

    returntype을 지정하지 않으면 속성은 Object를 반환합니다.

  • 구현 이 속성이 Implements 키워드를 사용하는 경우 포함 클래스 또는 구조체에는 Class 또는 Structure 문 바로 뒤에 Implements 문이 있어야 합니다. Implements 문은 implementslist에 지정된 각 인터페이스를 포함해야 합니다. 그러나 인터페이스가 definedname에 있는 Property를 정의하는 이름은 name에 있는 이 속성의 이름과 동일할 필요는 없습니다.

동작

  • 속성 프로시저에서 반환. Get 또는 Set 프로시저가 호출 코드로 반환되면 이를 호출한 문 다음의 문으로 실행이 계속됩니다.

    Exit PropertyReturn 문은 속성 프로시저를 즉시 종료합니다. Exit PropertyReturn 문은 프로시저의 어느 위치에나 나타날 수 있으며, Exit PropertyReturn 문을 혼합할 수 있습니다.

  • 반환 값. 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

참고 항목