C# 연습

C#에서 레코드로 불변 주문 갱신하기

이 레슨에서는 레코드와 with 식으로 원래 주문은 바꾸지 않고 새 버전의 주문을 만듭니다.

소개

불변(immutable) 데이터는 한번 만들면 더 이상 바뀌지 않습니다. 직접 고치는 대신 필요한 부분을 바꾼 복사본을 만듭니다. 이렇게 하면 프로그램의 여러 부분이 같은 객체를 공유할 때 찾기 어려운 오류를 피할 수 있습니다.

식 pending with { Status = "Shipped" }는 Id는 같지만 상태가 Shipped인 새 주문을 만듭니다. 원래 주문 pending은 Pending 상태를 유지하므로 출력 결과는 Pending -> Shipped입니다.

실행 가능한 C# 예제

C#
코드 실행 →
Program.cs
using System;
record Order(int Id, string Status);
class Program
{
    static void Main()
    {
        var pending = new Order(7, "Pending");
        var shipped = pending with { Status = "Shipped" };
        Console.WriteLine($"{pending.Status} -> {shipped.Status}");
    }
}
실행 결과
Pending -> Shipped

디버거로 연습하기

중요한 대입이나 조건에 중단점을 두고 Debug를 눌러 다음 줄로 넘어가기 전에 지역 변수 값을 확인하세요.