컴파일과 런타임

Shy·2025년 3월 8일

C#

목록 보기
1/27

컴파일 타임 vs 런타임

컴파일 타임(Complile-time)

  • 코드를 작성하고 컴파일할 때(빌드할 때) 발생하는 시간을 의미한다.
  • 즉, 프로그램이 실행되기 전 단계에서 이루어지는 작업이다.
  • C#에서는 코드를 작성하고 Ctrl + Shift + B (빌드)를 하면 컴파일러가 코드 오류를 체크하고 실행 파일을 만든다.
  • 이때 값이 정해지는 변수를 컴파일 타임 상수(Compile-time constant)라고 한다.

C#에서 const는 컴파일 타임에 결정된다.

const int MAX_AGE = 100; // 컴파일 타임에 결정
// MAX_AGE는 컴파일할 때(코드 빌드 시) 100으로 고정된다.
// 그래서 const로 선언된 값은 프로그램 실행 중 변경할 수 없다.
// 만약 변경하려 하면 컴파일 오류 발생
MAX_AGE = 120; // const값 변경 시 오류 발생!!

런타임(Runtime)

  • 프로그램이 실제로 실행될 때(사용자가 프로그램을 실행하는 순간) 발생하는 시간을 의미한다.
  • 즉, 사용자가 프로그램을 실행한 후 메모리에 올라가서 동작하는 시점이다.
  • 이때 결정되는 변수 값을 런타임 상수(Runtime constant)라고 한다.

C#에서 readonly는 런타임에 결정될 수 있다.

class Example
{
    readonly int maxAge;

    public Example()
    {
        maxAge = 100; // 가능 (생성자에서 할당)
    }
}
  • readonly생성자에서 값을 할당할 수 있다. (프로그램이 실행될 때 값이 결정될 수 있다.)
  • 하지만 한 번 값이 설정되면 이후 변경할 수 없다!
  • 즉, const와 달리 컴파일 타임이 아니라 런터임에서 결정될 수 있는 값이다.

특징const(컴파일 타임 상수)readonly (런타임 상수)
값이 결정되는 때컴파일 타임 (코드 빌드할 때)런타임 (프로그램 실행할 때)
객체에서 사용 가능?❌ 불가능 (숫자, 문자열만 가능)✅ 가능 (객체도 가능)
생성자에서 값 할당이 가능?❌ 불가능✅ 가능
초기화 후 변경 가능?❌ 변경 불가능❌ 변경 불가능
profile
신입사원...

0개의 댓글