다음을 통해 공유


상수(C# 프로그래밍 가이드)

상수는 컴파일 시간에 알려져 있으며 프로그램 수명 동안 변경되지 않는 변경할 수 없는 값입니다. 상수는 const 한정자를 사용하여 선언됩니다. C# 기본 제공 형식 만 .로 const선언할 수 있습니다. 이외의 참조 형식 상수는 Stringnull 값으로만 초기화할 수 있습니다. 클래스, 구조체 및 배열을 비롯한 사용자 정의 형식은 사용할 const수 없습니다. 읽기 전용 한정자를 사용하여 런타임에 한 번(예: 생성자에서) 초기화된 클래스, 구조체 또는 배열을 만들고 그 후에는 변경할 수 없습니다.

C#은 메서드, 속성 또는 이벤트를 지원하지 const 않습니다.

열거형 형식을 사용하면 정수 기본 제공 형식에 대해 int, uint, long와 같은 명명된 상수를 정의할 수 있습니다. 더 많은 정보를 보려면 열거형을 참조하세요.

상수는 선언될 때 초기화해야 합니다. 다음은 그 예입니다.

class Calendar1
{
    public const int Months = 12;
}

이 예제에서 상수 Months 는 항상 12이며 클래스 자체에서도 변경할 수 없습니다. 실제로 컴파일러가 C# 소스 코드에서 상수 식별자(예: Months)를 발견하면 리터럴 값을 생성한 IL(중간 언어) 코드에 직접 대체합니다. 런타임 const 에 상수와 연결된 변수 주소가 없으므로 참조로 필드를 전달할 수 없으며 식에 l-value로 표시될 수 없습니다.

비고

DLL과 같은 다른 코드에 정의된 상수 값을 참조할 때는 주의해야 합니다. 새 버전의 DLL이 상수에 대한 새 값을 정의하는 경우 프로그램은 새 버전에 대해 다시 컴파일될 때까지 이전 리터럴 값을 계속 유지합니다.

같은 형식의 여러 상수는 동시에 선언할 수 있습니다. 예를 들면 다음과 같습니다.

class Calendar2
{
    public const int Months = 12, Weeks = 52, Days = 365;
}

상수 초기화에 사용되는 식은 순환 참조를 만들지 않는 경우 다른 상수의 참조를 참조할 수 있습니다. 다음은 그 예입니다.

class Calendar3
{
    public const int Months = 12;
    public const int Weeks = 52;
    public const int Days = 365;

    public const double DaysPerWeek = (double) Days / (double) Weeks;
    public const double DaysPerMonth = (double) Days / (double) Months;
}

상수는 public, private, protected, internal, protected internal 또는 private protected로 표시될 수 있습니다. 이러한 액세스 한정자는 클래스 사용자가 상수에 액세스할 수 있는 방법을 정의합니다. 자세한 내용은 액세스 한정자를 참조하세요.

상수 값은 형식의 모든 인스턴스에 대해 동일하기 때문에 상수는 정적 필드인 것처럼 액세스됩니다. static 키워드를 사용하여 선언하지 않습니다. 상수 정의 클래스에 없는 식은 클래스 이름, 마침표 및 상수의 이름을 사용하여 상수에 액세스해야 합니다. 다음은 그 예입니다.

int birthstones = Calendar.Months;

C# 언어 사양

자세한 내용은 C# 언어 사양을 참조하세요. 언어 사양은 C# 구문 및 사용의 최종 소스입니다.

참고하십시오