C# 2.0 以降の新機能を一つづつ確認していきます。
以前に一度行ったのですが、公式ドキュメント再編でリンク切れしているところを見つけてしまったので。今ならもっと簡潔なサンプルが欠けるところもあるだろうし、せっかくなので今もう一度確認して行きます。
パラメーターの in 修飾子
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/in-parameter-modifier
引数を読み取り専用にできる。
// in 引数を持つ関数 void Func(St stNotIn, in St stIn) { stNotIn = new(); // in 引数でないので変数を変更可能 stNotIn.Val = new(); // in 引数でないのでフィールド変更可能 // stIn = new(); // これはエラー in 引数は変数を変更できない // stIn.Val = new(); // これはエラー in 引数はフィールドを変更できない } // 構造体 struct St { public int Val; }