C#에서는 코드를 작성하고 Ctrl + Shift + B (빌드)를 하면 컴파일러가 코드 오류를 체크하고 실행 파일을 만든다.C#에서 const는 컴파일 타임에 결정된다.
const int MAX_AGE = 100; // 컴파일 타임에 결정
// MAX_AGE는 컴파일할 때(코드 빌드 시) 100으로 고정된다.
// 그래서 const로 선언된 값은 프로그램 실행 중 변경할 수 없다.
// 만약 변경하려 하면 컴파일 오류 발생
MAX_AGE = 120; // const값 변경 시 오류 발생!!
C#에서 readonly는 런타임에 결정될 수 있다.
class Example
{
readonly int maxAge;
public Example()
{
maxAge = 100; // 가능 (생성자에서 할당)
}
}
readonly는 생성자에서 값을 할당할 수 있다. (프로그램이 실행될 때 값이 결정될 수 있다.)const와 달리 컴파일 타임이 아니라 런터임에서 결정될 수 있는 값이다.| 특징 | const(컴파일 타임 상수) | readonly (런타임 상수) |
|---|---|---|
| 값이 결정되는 때 | 컴파일 타임 (코드 빌드할 때) | 런타임 (프로그램 실행할 때) |
| 객체에서 사용 가능? | ❌ 불가능 (숫자, 문자열만 가능) | ✅ 가능 (객체도 가능) |
| 생성자에서 값 할당이 가능? | ❌ 불가능 | ✅ 가능 |
| 초기화 후 변경 가능? | ❌ 변경 불가능 | ❌ 변경 불가능 |