다음을 통해 공유


const 키워드

const 키워드를 사용하여 상수 필드 또는 로컬 상수를 선언합니다. 상수 필드와 로컬은 변수가 아니며 수정할 수 없습니다. 상수는 숫자, 부울 값, 문자열 또는 null 참조일 수 있습니다. 언제든지 변경해야 하는 정보를 나타내는 상수는 만들지 마세요. 예를 들어 상수 필드를 사용하여 서비스 가격, 제품 버전 번호 또는 회사의 브랜드 이름을 저장하지 마세요. 이러한 값은 시간이 지남에 따라 변경될 수 있으며, 컴파일러가 상수를 전파하기 때문에 라이브러리로 컴파일된 다른 코드를 다시 컴파일해야 변경 내용을 확인할 수 있습니다. 읽기 전용 키워드도 참조하세요. 예를 들어:

const int X = 0;
public const double GravitationalConstant = 6.673e-11;
private const string ProductName = "Visual C#";

사용된 모든 식이 상수 문자열인 경우 보간된 문자열 상수일 수 있습니다. 이 기능은 상수 문자열을 빌드하는 코드를 향상시킬 수 있습니다.

const string Language = "C#";
const string Platform = ".NET";
const string FullProductName = $"{Platform} - Language: {Language}";

비고

상수 선언의 형식은 선언에서 도입하는 멤버의 형식을 지정합니다. 로컬 상수 또는 상수 필드의 이니셜라이저는 암시적으로 대상 형식으로 변환할 수 있는 상수 식이어야 합니다.

상수 식은 컴파일 시간에 완전히 평가할 수 있는 식입니다. 따라서 참조 형식의 상수에 사용할 수 있는 값은 문자열과 null 참조뿐입니다.

상수 선언은 다음과 같은 여러 상수 선언을 수행할 수 있습니다.

public const double X = 1.0, Y = 2.0, Z = 3.0;

static 수정자는 상수 선언에서 허용되지 않습니다.

상수는 다음과 같이 상수 식에 포함될 수 있습니다.

public const int C1 = 5;
public const int C2 = C1 + 100;

메모

읽기 전용 키워드는 const 키워드와 다릅니다. const 필드는 필드 선언에서만 초기화할 수 있습니다. readonly 필드는 선언 또는 생성자에서 초기화할 수 있습니다. 따라서 readonly 필드는 사용된 생성자에 따라 다른 값을 가질 수 있습니다. 또한 const 필드는 컴파일 시간 상수이지만 readonly 필드는 다음 줄과 같이 런타임 상수에 사용할 수 public static readonly uint l1 = (uint)DateTime.Now.Ticks;

예제

public class ConstTest
{
    class SampleClass
    {
        public int x;
        public int y;
        public const int C1 = 5;
        public const int C2 = C1 + 5;

        public SampleClass(int p1, int p2)
        {
            x = p1;
            y = p2;
        }
    }

    static void Main()
    {
        var mC = new SampleClass(11, 22);
        Console.WriteLine($"x = {mC.x}, y = {mC.y}");
        Console.WriteLine($"C1 = {SampleClass.C1}, C2 = {SampleClass.C2}");
    }
}
/* Output
    x = 11, y = 22
    C1 = 5, C2 = 10
*/

다음 예제에서는 로컬 상수를 선언하는 방법을 보여 줍니다.

public class SealedTest
{
    static void Main()
    {
        const int C = 707;
        Console.WriteLine($"My local constant = {C}");
    }
}
// Output: My local constant = 707

C# 언어 사양

자세한 내용은 C# 언어 사양다음 섹션을 참조하세요.

참고하세요