■ C# 10.0 での新機能
・レコード構造体 ( Record structs )
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/record-structs
以前はクラスでしか作れなかったレコードが構造体でも作れるようになった。ただし標準ではプロパティの値が変更可能。readonly にすることで不変に。
{ // レコード構造体 SampleStruct sampleStruct = new(1); sampleStruct.Value1 = 2; } { // レコードクラス (以前からの機能) SampleClass sampleClass = new(1); // sampleClass.Value1 = 2; これはエラー。レコードクラスは不変 } { // 不変のレコード構造体 SampleReadolyStruct sampleReadonlyStruct = new(1); // sampleReadonlyStruct.Value1 = 2; これはエラー } // レコード構造体 record struct SampleStruct(int Value1); // レコードクラス (以前からの機能) record class SampleClass(int Value1); // 不変のレコード構造体 readonly record struct SampleReadolyStruct(int Value1);