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);
    }
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.