스마트한 개발 공부/C#

[C#] 변수를 상수형으로 만드는 방법 : readonly와 const

스마트한지노 2021. 8. 19. 23:14
728x90
반응형

C#에서는 변수를 상수로 만드는 방법이 존재한다. 그 중에서 const와 readonly라는 한정자가 있다.
const는 compile을 한 시점에 값을 확정하기 때문에, const 필드는 필드 선언에서만 초기화 될 수 있다. 반면에, readonly는 필드 선언과 임의 생성자에서 readonly 값을 여러 번 할당할 수 있다. 그래서 readonly 필드는 생성자를 만들 때 그에 따라 다른 값을 줄 수 있다. 

1. const 예시

class ConPoint
{
    const int x = 5;
    int y;
    public ConPoint(int x, int y)
    {
        this.y = y;
    }

    public override string ToString() //private 변수를 출력하기 위한 출력코드
    {
        return $"x:{x} - y:{y}";
    }
}

2. readonly 예시

class ReadPoint
{
    readonly int x = 5;
    int y;
    public ReadPoint(int x, int y)
    {
        this.x = x;
        this.y = y;
    }
    public override string ToString()
    {
        return $"x:{x} - y:{y}";
    }

}

3. const와 readonly로 선언된 변수 값 비교

class Readonly_Const_example
{
    static void Main()
    {
        ConPoint p1 = new ConPoint(1, 2);
        Console.WriteLine(p1.ToString()); // x:5 - y:2
        
        ReadPoint p2 = new ReadPoint(1, 2);
        Console.WriteLine(p2.ToString()); x:1 - y:2
    }
}

const를 할당한 변수는 compile시에 값이 이미 할당이 되므로 생성자에 값을 할당해도 변하지 않는다. 반면에, readonly는 필드 선언시에도 값을 할당할 수 있기 때문에 생성자에 값을 할당하면 그 값으로 바뀐다. 

728x90
반응형