const(C# 참조)
업데이트: 2007년 11월
const 키워드는 필드 또는 지역 변수의 선언을 한정하는 데 사용됩니다. 이 키워드는 필드 또는 지역 변수의 값을 상수로, 즉 수정할 수 없도록 지정합니다. 예를 들면 다음과 같습니다.
const int x = 0;
public const double gravitationalConstant = 6.673e-11;
private const string productName = "Visual C#";
설명
상수 선언의 형식은 선언에 의해 정의된 멤버의 형식을 지정합니다. 상수 식은 대상 형식의 값 또는 대상 형식으로 암시적으로 변환될 수 있는 형식의 값을 제공해야 합니다.
상수 식은 컴파일 타임에 완전하게 계산될 수 있는 식입니다. 따라서 참조 형식의 상수에 대해 가능한 유일한 값은 string과 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;
참고: |
---|
readonly 키워드는 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()
{
SampleClass mC = new SampleClass(11, 22);
Console.WriteLine("x = {0}, y = {1}", mC.x, mC.y);
Console.WriteLine("c1 = {0}, c2 = {1}",
SampleClass.c1, 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 = {0}", c);
}
}
// Output: My local constant = 707
C# 언어 사양
자세한 내용은 C# 언어 사양의 다음 단원을 참조하십시오.
6.1.6 암시적 상수 식 변환
8.5.2 지역 상수 선언