C# 11 の新機能を確認しています。目次は次の記事です。
rksoftware.hatenablog.com
今回は 「 拡張 nameof スコープ 」。公式 Learn の記事は次です。
メソッドに付ける属性で、そのメソッドのパラメータ名で nameof できます。
■ 確認
次のようなコードが書けます。
[return: System.Diagnostics.CodeAnalysis.NotNullIfNotNull(nameof(arg))] string? Method(string? arg) => arg;
他にも、引数の名前を受け取るメソッドの属性があれば使えますが、↑ の例の属性以外でどれほど使う機会があるか。メソッドのパラメータを属性で修飾するときは、パラメータに属性を付けることが多いですし。次のように。
Method(null); // 警告 CS8625 null リテラルを null 非許容参照型に変換できません。 string? Method([System.Diagnostics.CodeAnalysis.DisallowNullAttribute] string? arg) => arg;
でも、実際必要な場面に出会ったら、新機能として覚えていなくても普通に書いて使っていきそうです。
■ 必要な時、自然に書くと思います
この新機能は覚えておかなくても、必要な場面では自然に書いているとおもいます。大丈夫です。安心してください。