Const 문(Visual Basic)
업데이트: 2007년 11월
하나 이상의 상수를 선언하고 정의합니다.
[ <attributelist> ] [ accessmodifier ] [ Shadows ]
Const constantlist
구성 요소
attributelist
선택적 요소입니다. 이 문에서 선언된 모든 상수에 적용되는 특성 목록입니다. 꺽쇠괄호("<" 및 ">")로 묶인 특성 목록을 참조하십시오.accessmodifier
선택적 요소입니다. 이러한 상수에 액세스할 수 있는 코드를 지정합니다. Public(Visual Basic), Protected(Visual Basic), Friend(Visual Basic), Protected Friend 또는 Private(Visual Basic)이 될 수 있습니다.Shadows
선택적 요소입니다. 기본 클래스에서 프로그래밍 요소를 다시 선언하고 숨깁니다. Shadows를 참조하십시오.constantlist
필수적 요소입니다. 이 문에서 선언되는 상수 목록입니다.constant[ , constant ... ]
각 constant의 구문과 구성 요소는 다음과 같습니다.
constantname[ As datatype ] = initializer
구성 요소
설명
constantname
필수적 요소입니다. 상수의 이름으로, 선언 요소 이름을 참조하십시오.
datatype
Option Strict가 On이면 필수적 요소입니다. 상수의 데이터 형식으로,
initializer
필수적 요소입니다. 컴파일 타임에 계산되고 상수에 할당되는 식입니다.
설명
응용 프로그램에서 변경되지 않는 값이 있는 경우 명명된 상수를 정의하여 리터럴 값 대신 사용할 수 있습니다. 이름이 값보다 기억하기 쉽습니다. 상수를 한 번만 정의하여 코드의 여러 위치에서 사용할 수 있습니다. 이후 버전에서 해당 값을 다시 정의해야 할 경우에는 Const 문만 변경하면 됩니다.
모듈 또는 프로시저 수준에서만 Const를 사용할 수 있습니다. 이는 변수의 선언 컨텍스트가 클래스, 구조체, 모듈, 프로시저 또는 블록이어야 하며 소스 파일, 네임스페이스 또는 인터페이스가 될 수 없음을 의미합니다. 자세한 내용은 선언 컨텍스트 및 기본 액세스 수준을 참조하십시오.
프로시저 내의 지역 상수는 기본적으로 공용 액세스이며 이러한 지역 상수에 액세스 한정자를 사용할 수 없습니다. 모든 프로시저 외부의 클래스 및 모듈 멤버 상수는 기본적으로 전용 액세스이며 구조체 멤버 상수는 기본적으로 공용 액세스입니다. 액세스 한정자를 사용하여 액세스 수준을 조정할 수 있습니다.
규칙
선언 컨텍스트. 모든 프로시저 외부의 모듈 수준에서 선언되는 상수는 멤버 상수입니다. 이 상수는 해당 상수를 선언하는 클래스, 구조체 또는 모듈의 멤버입니다.
프로시저 수준에서 선언되는 상수는 지역 상수입니다. 이 상수는 해당 상수를 선언하는 프로시저 또는 블록에 대해 지역적으로 설정됩니다.
특성. 지역 상수가 아닌 멤버 상수에만 특성을 적용할 수 있습니다. 특성은 정보를 어셈블리 메타데이터에 제공하므로 지역 상수와 같은 임시 저장소에는 의미가 없습니다.
한정자. 기본적으로 모든 상수는 Shared, Static 및 ReadOnly입니다. 상수를 선언하는 경우 이러한 키워드를 사용할 수 없습니다.
프로시저 수준에서 Shadows 또는 액세스 한정자를 사용하여 로컬 상수를 선언할 수 없습니다.
여러 상수. 동일한 선언문에서 여러 개의 상수를 선언하여 각각에 대해 constantname 구성 요소를 지정할 수 있습니다. 상수가 여러 개 있으면 쉼표로 구분됩니다.
데이터 형식 규칙
**데이터 형식.**Const 문은 변수의 데이터 형식을 선언할 수 있습니다. 열거형의 이름 또는 모든 데이터 형식을 지정할 수 있습니다.
**기본 형식.**datatype을 지정하지 않는 경우 상수는 initializer의 데이터 형식을 사용합니다. datatype과 initializer를 모두 지정하는 경우 initializer의 데이터 형식이 datatype으로 변환될 수 있어야 합니다. datatype이나 initializer가 모두 없으면 데이터 형식의 기본값으로 Object가 사용됩니다.
다른 형식. 선언하는 각 변수에 대해 개별 As 절을 사용하여 상수별로 서로 다른 데이터 형식을 지정할 수 있습니다. 그러나 공통 As 절을 사용하여 여러 상수를 같은 형식으로 선언할 수는 없습니다.
**초기화.**constantlist에서 모든 상수 값을 초기화해야 합니다. initializer를 사용하여 상수에 할당될 식을 제공할 수 있습니다. 이 식은 리터럴, 이미 정의된 다른 상수 및 이미 정의된 열거형 멤버의 조합으로 구성될 수 있습니다. 산술 연산자와 논리 연산자를 사용하여 이러한 요소를 조합할 수 있습니다.
initializer에서는 변수나 함수를 사용할 수 없습니다. 그러나 CByte나 CShort와 같은 변환 키워드는 사용할 수 있습니다. 상수 String 또는 Char 인수를 사용하여 호출할 경우에는 컴파일 타임에 계산되므로 AscW도 사용할 수 있습니다.
동작
범위. 지역 상수는 해당 프로시저 또는 블록에서만 액세스할 수 있습니다. 멤버 상수는 클래스, 구조체 또는 모듈 모두에서 액세스할 수 있습니다.
한정. 클래스, 구조체 또는 모듈 외부에 있는 코드는 해당 클래스, 구조체 또는 모듈의 이름으로 멤버 상수의 이름을 한정해야 합니다. 프로시저 또는 블록 외부에 있는 코드는 해당 프로시저 또는 블록에 있는 로컬 상수를 참조할 수 없습니다.
예제
다음 예제에서는 Const 문을 사용하여 리터럴 값 대신 사용할 상수를 선언합니다.
' The following statements declare constants.
Const maximum As Long = 459
Public Const helpString As String = "HELP"
Private Const startValue As Integer = 5
Object 데이터 형식이 있는 상수를 정의하면 Visual Basic 컴파일러에서 Object 대신 initializer의 형식을 제공합니다. 이 예제에서 naturalLogBase 상수는 Decimal 런타임 형식을 가집니다.
Const naturalLogBase As Object = CDec(2.7182818284)
MsgBox("Run-time type of constant naturalLogBase is " & _
naturalLogBase.GetType.ToString())
앞의 예제에서는 CStr를 사용하여 Type을 String으로 변환할 수 없으므로 GetType 연산자에서 반환된 Type 개체에 ToString 메서드를 사용합니다.