다음을 통해 공유


ReadOnly(Visual Basic)

변수 또는 속성을 읽을 수 있지만 쓸 수 없게 지정합니다.

비고

규칙

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

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

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

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

ReadOnly 변수를 사용하는 경우

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

중요합니다

변수의 데이터 형식이 배열 또는 클래스 인스턴스와 같은 참조 형식인 경우 변수 자체가 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 정자는 다음 컨텍스트에서 사용할 수 있습니다.

참고하십시오