Const 문(Visual Basic)

하나 이상의 상수를 선언하고 정의합니다.

구문

[ <attributelist> ] [ accessmodifier ] [ Shadows ]
Const constantlist

부분

attributelist
선택 사항. 이 문에 선언된 모든 상수에 적용되는 특성 목록입니다. 꺾쇠 괄호("<" 및 ">")로 묶인 특성 목록을 참조하세요.

accessmodifier
선택 사항. 이를 사용하여 이러한 상수에 액세스할 수 있는 코드를 지정합니다. Public, Protected, Friend, Protected Friend, Private 또는 Private Protected일 수 있습니다.

Shadows
선택 사항. 기본 클래스에서 프로그래밍 요소를 다시 선언하고 숨기려면 이를 사용합니다. Shadows를 참조하세요.

constantlist
필수입니다. 이 문에서 선언되는 상수 목록입니다.

constant [ , constant ... ]

constant에는 다음과 같은 구문과 요소가 있습니다.

constantname [ As datatype ] = initializer

요소 설명
constantname 필수입니다. 상수의 이름입니다. Declared Element Names을 참조하세요.
datatype Option StrictOn인 경우 필수입니다. 상수의 데이터 형식입니다.
initializer 필수입니다. 컴파일 시간에 평가되어 상수에 할당되는 식입니다.

설명

애플리케이션에서 절대 변경되지 않는 값이 있는 경우 명명된 상수를 정의하고 이를 리터럴 값 대신 사용할 수 있습니다. 이름은 값보다 기억하기 쉽습니다. 상수를 한 번만 정의하면 코드의 여러 위치에서 사용할 수 있습니다. 이후 버전에서 값을 재정의해야 하는 경우 Const 문만 변경해야 합니다.

모듈 또는 프로시저 수준에서만 Const를 사용할 수 있습니다. 이는 변수의 선언 컨텍스트가 클래스, 구조, 모듈, 프로시저 또는 블록이어야 하며 원본 파일, 네임스페이스 또는 인터페이스일 수 없음을 의미합니다. 자세한 내용은 선언 컨텍스트 및 기본 액세스 수준을 참조하세요.

프로시저 내부의 로컬 상수는 기본적으로 공용 액세스로 설정되며 이에 대한 액세스 한정자를 사용할 수 없습니다. 클래스 및 모듈 멤버 상수(프로시저 외부)는 기본적으로 프라이빗 액세스로 설정되고 구조 멤버 상수는 기본적으로 공용 액세스로 설정됩니다. 액세스 한정자를 사용하여 액세스 수준을 조정할 수 있습니다.

규칙

  • 선언 컨텍스트. 프로시저 외부의 모듈 수준에서 선언된 상수는 멤버 상수입니다. 이를 선언하는 클래스, 구조체 또는 모듈의 멤버입니다.

    프로시저 수준에서 선언된 상수는 로컬 상수입니다. 이를 선언하는 프로시저나 블록에 대해 로컬입니다.

  • 특성. 로컬 상수가 아닌 멤버 상수에만 특성을 적용할 수 있습니다. 특성은 어셈블리의 메타데이터에 정보를 제공하는데, 이는 로컬 상수와 같은 임시 스토리지에는 의미가 없습니다.

  • 한정자. 기본적으로 모든 상수는 Shared, StaticReadOnly입니다. 상수를 선언할 때는 이러한 키워드를 사용할 수 없습니다.

    프로시저 수준에서는 Shadows 또는 액세스 한정자를 사용하여 로컬 상수를 선언할 수 없습니다.

  • 다중 상수. 동일한 문에서 여러 상수를 선언하고 각 상수에 대해 constantname 부분을 지정할 수 있습니다. 다중 상수는 쉼표로 구분됩니다.

데이터 형식 규칙

  • 데이터 형식. Const 문은 변수의 데이터 형식을 선언할 수 있습니다. 모든 데이터 형식이나 열거형 이름을 지정할 수 있습니다.

  • 기본 형식. datatype을 지정하지 않으면 상수는 initializer의 데이터 형식을 사용합니다. datatypeinitializer를 모두 지정하는 경우 initializer의 데이터 형식은 datatype으로 변환 가능해야 합니다. datatypeinitializer가 모두 없으면 데이터 형식의 기본값은 Object입니다.

  • 다양한 형식. 선언하는 각 변수에 대해 별도의 As 절을 사용하여 다양한 상수에 대해 다양한 데이터 형식을 지정할 수 있습니다. 그러나 공통 As 절을 사용하여 여러 상수를 동일한 형식으로 선언할 수는 없습니다.

  • 초기화. constantlist의 모든 상수 값을 초기화해야 합니다. 상수에 할당할 식을 제공하려면 initializer를 사용합니다. 식은 리터럴, 이미 정의된 다른 상수 및 이미 정의된 열거형 멤버의 조합일 수 있습니다. 산술 및 논리 연산자를 사용하여 이러한 요소를 결합할 수 있습니다.

    initializer에서는 변수나 함수를 사용할 수 없습니다. 그러나 CByteCShort와 같은 전환 키워드를 사용할 수 있습니다. 상수 String 또는 Char 인수로 호출하는 경우 AscW를 사용할 수도 있습니다. 컴파일 시간에 평가할 수 있기 때문입니다.

동작

  • 범위. 로컬 상수는 해당 프로시저나 블록 내에서만 액세스할 수 있습니다. 멤버 상수는 클래스, 구조체 또는 모듈 내 어디에서나 액세스할 수 있습니다.

  • 한정. 클래스, 구조체 또는 모듈 외부의 코드는 해당 클래스, 구조체 또는 모듈의 이름으로 멤버 상수의 이름을 한정해야 합니다. 프로시저 또는 블록 외부의 코드는 해당 프로시저 또는 블록 내의 로컬 상수를 참조할 수 없습니다.

예 1

다음 예에서는 Const 문을 사용하여 리터럴 값 대신 사용할 상수를 선언합니다.

' The following statements declare constants.
Const maximum As Long = 459
Public Const helpString As String = "HELP"
Private Const startValue As Integer = 5

예제 2

데이터 형식이 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())

앞의 예에서는 GetType 연산자가 반환한 Type 개체에 대해 ToString 메서드를 사용합니다. 그 이유는 CStr를 사용하여 TypeString으로 변환할 수 없기 때문입니다.

참고 항목