rksoftware

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

レコード構造体

■ 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);