다음을 통해 공유


ReadOnly(Visual Basic)

변수나 속성을 읽을 수는 있지만 쓸 수는 없도록 지정합니다.

설명

규칙

  • 선언 컨텍스트. ReadOnly는 모듈 수준에서만 사용할 수 있습니다. 이는 ReadOnly 요소의 선언 컨텍스트가 클래스, 구조체 또는 모듈이어야 하며 원본 파일, 네임스페이스 또는 프로시저일 수 없음을 의미합니다.

  • 결합된 한정자. 동일한 선언에서 ReadOnlyStatic과 함께 지정할 수 없습니다.

  • 값 할당. ReadOnly 속성을 사용하는 코드는 해당 값을 설정할 수 없습니다. 그러나 기본 스토리지에 액세스할 수 있는 코드는 언제든지 값을 할당하거나 변경할 수 있습니다.

    선언이나 해당 변수가 정의된 클래스 또는 구조체의 생성자에서만 ReadOnly 변수에 값을 할당할 수 있습니다.

ReadOnly 변수를 사용해야 하는 경우

Const 문을 사용하여 상수 값을 선언하고 할당할 수 없는 상황이 있습니다. 예를 들어, Const 문은 할당하려는 데이터 형식을 허용하지 않거나 상수 식을 사용하여 컴파일 시간에 값을 계산하지 못할 수 있습니다. 컴파일 시간에는 값을 알지 못할 수도 있습니다. 이러한 경우에는 ReadOnly 변수를 사용하여 상수 값을 보유할 수 있습니다.

Important

변수의 데이터 형식이 배열이나 클래스 인스턴스와 같은 참조 형식인 경우 변수 자체가 ReadOnly인 경우에도 해당 멤버를 변경할 수 있습니다. 다음 예제에서는 이것을 보여 줍니다.

ReadOnly characterArray() As Char = {"x"c, "y"c, "z"c}
Sub ChangeArrayElement()
    characterArray(1) = "M"c
End Sub

초기화되면 characterArray()가 가리키는 배열은 "x", "y" 및 "z"를 보유합니다. 변수 characterArrayReadOnly이므로 일단 초기화되면 해당 값을 변경할 수 없습니다. 즉, 새 배열을 할당할 수 없습니다. 그러나 하나 이상의 배열 멤버 값을 변경할 수 있습니다. ChangeArrayElement 프로시저를 호출한 후 characterArray()가 가리키는 배열은 "x", "M" 및 "z"를 보유합니다.

이는 프로시저 매개 변수를 ByVal로 선언하는 것과 유사합니다. 이는 프로시저가 호출 인수 자체를 변경하는 것을 방지하지만 멤버는 변경할 수 있도록 허용합니다.

예시

다음 예에서는 직원이 고용된 날짜에 대한 ReadOnly 속성을 정의합니다. 클래스는 속성 값을 내부적으로 Private 변수로 저장하며 클래스 내부의 코드만 해당 값을 변경할 수 있습니다. 그러나 속성은 Public이며 클래스에 액세스할 수 있는 모든 코드는 속성을 읽을 수 있습니다.

Class employee
    ' Only code inside class employee can change the value of hireDateValue.
    Private hireDateValue As Date
    ' Any code that can access class employee can read property dateHired.
    Public ReadOnly Property dateHired() As Date
        Get
            Return hireDateValue
        End Get
    End Property
End Class

ReadOnly 한정자는 다음 컨텍스트에서 사용할 수 있습니다.

참고 항목