less than 1 minute read

개요

readonly란?
=> readonly는 모든 자료형에 사용 할 수 있으며, 런타임에 이루어지므로 반드시 생성과 동시에 초기화 할 필요는 없습니다.
단, 생성자 단계에서 단 1번 할당을 통해 초기화 할 수 있습니다.

const와 차이점은?
=> 컴파일 시 아니면 런타임 시 정수로 취급되는가, 유연성, 사용가능한 곳 등의 차이가 있지만, 어느쪽이든 나중에 값을 변경할 수 없다 라는 공통점이 있습니다.

어느쪽이든 나중에 값을 변경할 수 없고 compile중에 처리되는 const와 같은 성능 상 이점이 없는데 readonly를 사용하는 이유는?
=> 생성자 안에서 변수값을 바꾸는 등 상황에 따라 다르다고 할 수 있습니다.
예를 들어 풀 스크린 UI앱의 경우 기기의 디스플레이 해상도에 따라 화면 구성 요소의 크기가 달라질 수 있으며,
이때 앱은 런타임 중 최초 한번에 한해 해상도를 확정하고 그에 맞게 내부 UI의 크기와 배치 등을 설정하는데 이렇게 확정된 값은 프로세스가 종료되기 전 까지 계속 사용할 수 있습니다.


유니티에서도 당연히readonly를 사용할 수 있으며 해당 포스팅은 아래와 같습니다.
Unity에서 readonly


예제

[readonly]

public class ReadonlySample
{
    private readonly int testNumber;

    public ReadonlySample(int number)
    {
        testNumber = number;
    }

    public int GetTestNumber() => testNumber;

}

public class Program
{
    static void Main()
    {
        ReadonlySample sample = new ReadonlySample(27);
        Console.WriteLine(sample.GetTestNumber());
    }
}


[const]




Top