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"를 보유합니다. 변수 characterArray 는 ReadOnly초기화되면 해당 값을 변경할 수 없습니다. 즉, 새 배열을 할당할 수 없습니다. 그러나 하나 이상의 배열 멤버 값을 변경할 수 있습니다. 프로시저 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 정자는 다음 컨텍스트에서 사용할 수 있습니다.

참고하십시오