C# 2.0 以降の新機能を一つづつ確認していきます。
以前に一度行ったのですが、公式ドキュメント再編でリンク切れしているところを見つけてしまったので。今ならもっと簡潔なサンプルが欠けるところもあるだろうし、せっかくなので今もう一度確認して行きます。
readonly 構造体
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/builtin-types/struct#readonly-struct
・readonly struct は readonly なメンバーしか持てない
・保持する値が変更されない(値が変更可能になる定義が禁止される)
readonly struct SA { public readonly int PA; // public int PB; ← readonly 構造体なので これはエラー public SA(int a) { PA = a; } // public void Set(SA a) { this = a; } ← readonly 構造体なので これはエラー } struct SB { public readonly int PA; public int PB; // ← readonly 構造体でないので これは OK public SB(int a, int b) { PA = a; PB = b; } public void Set(SB a) { this = a; } // ← readonly 構造体でないので これは OK }