Set 문(Visual Basic)

속성에 값을 할당하는 데 사용되는 Set 속성 프로시저를 선언합니다.

구문

[ <attributelist> ] [ accessmodifier ] Set [([ByVal value [ As datatype ]])]  
    [ statements ]  
End Set  

부분

attributelist
선택 사항. 특성 목록을 참조하세요.

accessmodifier
이 속성의 GetSet 문 중 최대 하나에 대한 선택 사항입니다. 다음 중 하나일 수 있습니다.

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

value
선택 사항. 속성의 새 값을 포함하는 매개 변수입니다. 지정되지 않은 경우(즉, 매개 변수 목록이 없거나 비어 있는 경우) value라는 암시적 매개 변수가 정의됩니다. 이 암시적 매개 변수의 데이터 형식은 이 Set 문이 선언된 속성의 데이터 형식입니다.

datatype
value가 존재하고 Option StrictOn인 경우 필수입니다. value가 제공되지 않으면 존재할 수 없습니다. value 매개 변수의 데이터 형식입니다. 지정된 데이터 형식은 이 Set 문이 선언된 속성의 데이터 형식과 동일해야 합니다.

statements
선택 사항. Set 속성 프로시저가 호출될 때 실행되는 하나 이상의 문입니다.

End Set
필수입니다. Set 속성 프로시저의 정의를 종료합니다.

설명

속성이 ReadOnly로 표시되지 않는 한 모든 속성에는 Set 속성 프로시저가 있어야 합니다. Set 프로시저는 속성 값을 설정하는 데 사용됩니다.

Visual Basic은 대입문이 속성에 저장할 값을 제공할 때 속성의 Set 프로시저를 자동으로 호출합니다.

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

속성 선언 본문에는 속성 문End Property 문 사이에 속성의 GetSet 프로시저만 포함될 수 있습니다. 해당 프로시저 외에는 아무것도 저장할 수 없습니다. 특히 속성의 현재 값을 저장할 수 없습니다. 이 값을 속성 프로시저 중 하나 내부에 저장하면 다른 속성 프로시저에서 이 값에 액세스할 수 없기 때문에 이 값을 속성 외부에 저장해야 합니다. 일반적인 방식은 속성과 동일한 수준에서 선언된 Private 변수에 값을 저장하는 것입니다. 적용되는 속성 내부에 Set 프로시저를 정의해야 합니다.

Set 문에서 accessmodifier를 사용하지 않는 한 Set 프로시저의 기본값은 포함 속성의 액세스 수준입니다.

규칙

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

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

동작

  • 속성 프로시저에서 반환. Set 프로시저가 호출 코드로 반환되면 저장할 값을 제공한 문에 따라 실행이 계속됩니다.

    Set 속성 프로시저는 Return 문 또는 Exit 문을 사용하여 반환할 수 있습니다.

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

예시

다음 예에서는 Set 문을 사용하여 속성 값을 설정합니다.

Class propClass
    Private propVal As Integer
    Property Prop1() As Integer
        Get
            Return propVal
        End Get
        Set(ByVal value As Integer)
            propVal = value
        End Set
    End Property
End Class

참고 항목