C#/TIL(Today I Learned)

2025-04-23 <const와 readonly>

프린스 알리 2025. 4. 23.

const (상수)

const는 컴파일할 때 값이 결정되는 상수다.
따라서 선언과 동시에 초기화되어야 하며, 모든 인스턴스에 대해 공통인 특징을 가지고 있다.(마치 static처럼)
값 타입과 문자열만 가능하며, 런타임 값(예 : DateTime.Now)으로는 초기화할 수 없다.

const int MaxPlayerCount = 4;
const string Greeting = "Hello, world!";

만약 다른 프로젝트에서 참조하는 라이브러리의 const 값이 바뀌면, 해당 라이브러리를 참조한 프로젝트는 다시 컴파일해야 반영된다.

readonly (읽기 전용)

readonly도 const와 마찬가지로 한 번 초기화하면 값을 바꿀 수 없지만,
const에 비해 초기화 시기와 할당 가능한 값의 범위가 유연하다.
요컨대 readonly는 선언과 동시에 초기화하는 것도 가능하지만, 런타임 때 값을 결정해도 상관 없다.
일단 선언만 해두고 생성자에서 초기화를 하는 방식이 가능하다는 의미이다.
이런 특징 덕분에 런타임 값으로도 초기화할 수 있다.

public class GameConfig
{
    public readonly int maxHP = 100;
    public readonly DateTime initTime;

    public GameConfig()
    {
        initTime = DateTime.Now; // 생성자에서 초기화 가능
    }
}

댓글