다음을 통해 공유


속성 및 속성 프로시저

업데이트: 2007년 11월

속성 및 필드를 사용하여 개체에 정보를 저장할 수 있습니다. 필드는 단순한 Public 변수이지만 속성은 값을 설정하거나 반환하는 방법을 제어하기 위해 속성 프로시저를 사용합니다. 속성 프로시저는 속성 값을 설정하거나 검색할 때 코드를 실행하는 데 사용할 수 있는 속성 정의에 선언된 코드 블록입니다.

Visual Basic에는 속성 값을 검색하기 위한 Get 속성 프로시저와 속성에 값을 할당하기 위한 Set 속성 프로시저라는 두 가지 형식의 속성 프로시저가 있습니다. 예를 들어, 은행 계정의 잔액을 저장하는 속성은 가용 잔액을 반환하기 전에 Get 속성 프로시저의 코드를 사용하여 이자를 기록하고 수수료를 확인합니다. 그런 다음 Set 속성 프로시저를 사용하여 잔액에 대한 유효성 검사를 수행하고 잔액이 잘못 업데이트되지 않도록 할 수 있습니다. 즉 속성 프로시저는 개체의 데이터를 보호하고 유효성을 검사할 수 있도록 합니다.

다음 코드 조각에서는 필드와 속성에서 값의 유효성을 검사하는 방법을 비교합니다.

Protected Sub TestFieldsAndProperties()
    ' Assume, for this example, that the only valid values for
    ' the field and property are numbers less than 10.
    Dim NewClass As New ThisClass

    ' Test data validation. 

    ' Works because there is no data validation.
    NewClass.ThisField = 36
    ' Will print 36.
    MsgBox("ThisField = " & NewClass.ThisField)

    ' The attempt to set the field to a value greater than 10 will silently fail.
    NewClass.ThisProperty = 36
    ' The next statement will print the old value of 0 instead.
    MsgBox("ThisProperty = " & NewClass.ThisProperty)
End Sub

Public Class ThisClass
    ' Declare a field.
    Public ThisField As Integer
    ' Field used for Property Set operations.
    Private thisPropertyValue As Integer = 0
    ' Declare a property.
    Public Property ThisProperty() As Integer
        Get
            Return thisPropertyValue
        End Get
        Set(ByVal Value As Integer)
            ' Only allow Set operation for values less than 10.
            If Value < 10 Then thisPropertyValue = Value
        End Set
    End Property
End Class

TestFieldsAndProperties 프로시저는 클래스의 인스턴스를 만들고 필드 및 속성 값을 설정하고 검색합니다. 이 예제에서는 10보다 작은 수만 유효한 값으로 가정합니다. 그러나 필드에 할당된 값의 유효성을 검사할 수 있는 방법이 없으므로 필드의 값을 36으로 설정할 수 있습니다. 반면에 속성은 10보다 작은 수만 할당하므로 36으로 설정할 수 없습니다.

읽기 전용 및 쓰기 전용 속성

대부분의 속성에는 내부에 저장된 값을 읽고 수정하는 데 사용할 수 있는 Get 및 Set 속성 프로시저가 모두 있습니다. 그러나 ReadOnly 또는 WriteOnly 한정자를 사용하여 속성을 수정하거나 읽지 못하도록 제한할 수도 있습니다.

읽기 전용 속성에는 Set 속성 프로시저가 있을 수 없으므로 항목을 노출하되 수정되지 않도록 하려면 이 속성을 사용하는 것이 좋습니다. 예를 들어, 읽기 전용 속성을 사용하여 시스템의 프로세서 속도를 향상시킬 수 있습니다.

쓰기 전용 속성에는 Get 속성 프로시저가 있을 수 없으므로 개체에 저장되지 않아야 하거나 저장될 수 없는 데이터를 사용하여 개체를 구성할 때 이 속성을 사용하는 것이 좋습니다. 예를 들어, 암호를 받아 개체의 상태를 변경만 하고 암호를 저장하지는 못하도록 하려는 경우 쓰기 전용 속성을 사용할 수 있습니다.

참고:

이전 버전의 Visual Basic에서는 속성에 개체를 할당할 때 사용할 수 있도록 Let 속성 프로시저를 지원했습니다. Visual Basic에서는 개체 할당이 다른 종류의 할당과 마찬가지로 처리되므로 Let 속성 프로시저가 필요하지 않습니다.

참고 항목

개념

Property 프로시저

속성 프로시저 및 필드

참조

Get 문

Set 문(Visual Basic)

ReadOnly(Visual Basic)

WriteOnly