[Unity]/[C#]

[C#] readonly 한정자 (feat.const 한정자)

극꼼 2022. 10. 6. 20:51
반응형


<const>

: 변수를 상수로 만들어주며, (런타임 시에)값을 변경하거나 수정할 수 없습니다.

* 기본적으로 static

* 반드시 값이 초기화되어야 함.

 


<readonly>

: 변수를 읽기 전용으로 만들어주며, 선언 시 또는 클래스 생성자에서 초기화 후에 수정할 수 없습니다.

* 선언할 때 값을 초기화하는 것이 필수가 아님.

* 생성자 외부에서 값을 수정할 수 없음.

class ReadOnlyExample
{
    public readonly int num = 5;
    public ReadOnlyExample()
    {
        num = 33;
    }
    public ReadOnlyExample(bool isTrue)
    {
        num = 500;
    }
}

ReadOnlyExample ex1 = new ReadOnlyExample();
ReadOnlyExample ex2 = new ReadOnlyExample(true);
Console.WriteLine((ex1.num)); //33출력
Console.WriteLine((ex2.num)); //500출력

 


<const와 readonly의 공통점과 차이점>

<공통점>

  • ‘값을 변경할 수 없다’

<차이점>

  • 값이 정해지는 타이밍
    • const : 컴파일 시 불변값이 정해짐 → 런타임에 값을 변경하려고 하면 compile-time 오류가 발생.
    • readonly : compile 시점에 값을 확정하지 않고, 런타임 시점에 이르러서야 값을 확정.

 

반응형

'[Unity] > [C#]' 카테고리의 다른 글

[C#] is, as 연산자  (1) 2022.10.11
[C#] 제네릭(Generic)  (0) 2022.10.07
[C#] reflection  (0) 2022.10.05
[C#] partial 클래스  (0) 2022.10.04
[C#] 일반화 프로그래밍  (2) 2022.09.30