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 を押し、次の行に進む前にローカル変数の値を確かめましょう。