C# 2.0 以降の新機能を一つづつ確認していきます。
以前に一度行ったのですが、公式ドキュメント再編でリンク切れしているところを見つけてしまったので。今ならもっと簡潔なサンプルが欠けるところもあるだろうし、せっかくなので今もう一度確認して行きます。
メソッド戻り値の ref readonly 修飾子
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/ref#reference-return-values
読み取り専用の参照を戻り値にできる
var val = 0; // ref var rval = ref Func(ref val); ← ref readonly 戻り値は ref readonly でないとエラー ref readonly var rval = ref Func(ref val); // rval = 10; ← ref readonly 変数を変更するコードはエラー // ref readonly 戻り値の関数 ref readonly int Func(ref int val) { return ref val; }