rksoftware

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

C# 2.0 以降の新機能の確認 - C# 7.2 - メソッド戻り値の ref readonly 修飾子

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; }