rksoftware

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

C# 2.0 以降の新機能の確認 - C# 7.3 - ピン留めを使用せずに fixed フィールドにアクセスできます

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

ピン留めを使用せずに fixed フィールドにアクセスできます

 [ 良いリンクを見つけられませんでした ]
 fixed フィールドへのアクセスで fixed が不要になった。

unsafe struct UnsafeStruct
{
    public fixed int ExiedField[1];
}

class Program
{
    static UnsafeStruct _unsafeStruct;

    unsafe static void Main()
    {
        // 以前はこんな感じ
        fixed (int* ptr = _unsafeStruct.ExiedField)
        {
            int value = ptr[0];
        }

        // C# のバージョンを低く設定すると
        // エラー CS8024  機能 '移動可能な固定バッファーのインデックス化' は C# X では使用できません。7.3 以上の言語バージョンをお使いください。
        {
            int value = _unsafeStruct.ExiedField[0];
        }
    }
}