변수 또는 속성을 읽을 수 있지만 쓸 수 없게 지정합니다.
비고
규칙
선언 컨텍스트입니다. 모듈 수준에서만 사용할
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 정자는 다음 컨텍스트에서 사용할 수 있습니다.
참고하십시오
.NET