rksoftware

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

C# 2.0 以降の新機能の確認 - C# 7.2 - readonly 構造体

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
}