オブジェクト指向 C#

C#のレコードと値による比較

このレッスンでは、レコードで不変のデータを短く表し、with式で一部を変えたコピーを作ります。

はじめに

レコード(record)は、主にデータを入れておくためのオブジェクト用に設計された型です。1行宣言するだけで、コンストラクター、読み取り専用のプロパティ、見やすい表示がそろいます。特に、中の値が同じなら2つのレコードは等しいとみなされます。

record User(string Name, string Role)の1行で、NameとRoleの2つのプロパティを持つ型ができます。式original with { Role = "Lead" }はRoleだけを変えたコピーを作り、originalはDeveloperのままです。表示すると、レコードは中身をUser { Name = Ada, Role = Lead }の形で自動で示します。

実行できる C# の例

C#
コードを実行 →
Program.cs
using System;

record User(string Name, string Role);

class Program
{
    static void Main()
    {
        var original = new User("Ada", "Developer");
        var promoted = original with { Role = "Lead" };
        Console.WriteLine(promoted);
    }
}
実行結果
User { Name = Ada, Role = Lead }

デバッガーで練習する

大事な代入や条件にブレークポイントを置いて Debug を押し、次の行に進む前にローカル変数の値を確かめましょう。

チャレンジで練習する

このレッスンの内容を使って実際の問題を解きましょう。各チャレンジはブラウザで動き、すぐにテストされ、AI のレビューも受けられます。

すべてのチャレンジ