C# 2.0 以降の新機能を一つづつ確認していきます。
以前に一度行ったのですが、公式ドキュメント再編でリンク切れしているところを見つけてしまったので。今ならもっと簡潔なサンプルが欠けるところもあるだろうし、せっかくなので今もう一度確認して行きます。
拡張可能な fixed ステートメント
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/fixed-statement
GetPinnableReference という名前のメソッドを実装する型はピン留めできる。
struct Struct { int[] _value; public Struct(int[] value) => _value = value; public ref int GetPinnableReference() => ref _value[0]; } class Program { unsafe static void Main() { // C# のバージョンを低く設定すると // エラー CS8107 機能 '拡張可能な fixed ステートメント' は C# X では使用できません。7.3 以上の言語バージョンをご使用ください。 fixed (int* ptr = new Struct(new []{ 10, 20 })) { Console.WriteLine(ptr[0]); Console.WriteLine(ptr[1]); } } }