더북(TheBook)

C#에는 구조체라고 하는 복잡한 값 타입이 있다. 구조체는 클래스의 정의와 매우 유사하지만 클래스와 달리 항상 값으로 전달된다. 즉, 구조체를 함수에 전달하면 구조체의 복사본이 생성되고 함수에서 이것을 다른 함수로 전달하면 또 다른 복사본이 생성된다. 구조체는 항상 복사된다. 다음 예제를 생각해 보자.

코드 2-4 불변성 예제

struct Point
{
    public int X;
    public int Y;
    public override string ToString() => $"X:{X},Y:{Y}";
}

static void Main(string[] args) {
    var a = new Point() {
        X = 5,
        Y = 5,
    };
    var b = a;
    b.X = 100;
    b.Y = 200;
    Console.WriteLine(b);
    Console.WriteLine(a);
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.