rksoftware

Visual Studio とか C# とかが好きです

C# 2.0 以降の新機能の確認 - C# 9.0 - レコード

C# 2.0 以降の新機能を一つづつ確認していきます。
以前に一度行ったのですが、公式ドキュメント再編でリンク切れしているところを見つけてしまったので。今ならもっと簡潔なサンプルが欠けるところもあるだろうし、せっかくなので今もう一度確認して行きます。

レコード

 https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/records
 GetHashCode()ToString()== なんかをいい感じに勝手に実装してくれる素敵な型。値を表現するクラスをいい感じに作ってくれます。プロパティもいい感じに作ってくれるのも魅力。

// 引数 string Value を持つコンストラクタが作られる
var saitama = new Saitama("せんべい");
// 引数と同名のプロパティが自動で作られて初期化も行われる
Console.WriteLine(saitama.Value);  // せんべい
// 良い感じの ToString も自動で実装
Console.WriteLine(saitama);  // Saitama { Value = せんべい }

// class の代わりに record と書く
// 引数を書くとコンストラクタとプロパティも作られる
public record Saitama(string Value)
{
}