コードインスペクション:呼び出し元の引数式パラメーターに冗長な引数が渡されています。
C# 10 で導入された [CallerArgumentExpression] 属性を使用すると、メソッドパラメーターに渡される式の文字列表現をキャプチャーできます。 これは、ログ記録、検証、デバッグに役立ちます。
この属性でマークされた API を使用している場合、対応する引数の文字列表現を別の引数で渡す必要はありません。 そのため、ReSharper はこれを冗長なものとして報告し、削除を提案します。
以下の例では、属性は Write メソッドの str パラメーターに適用されています。 つまり、 str の引数を指定せずに Write を呼び出すと、コンパイラーは num に提供された式の文字列表現を自動的に使用します。 str に渡される引数 "a + b" は、 num に渡される式 a + b の文字列表現と一致するため、2 番目の引数は冗長になり、安全に削除できます。
using System;
using System.Runtime.CompilerServices;
class RedundantArgument
{
void Write(int num,
[CallerArgumentExpression("num")] string str = "")
=> Console.WriteLine(str);
void Test(int a, int b) => Write(a + b, "a + b");
}
using System;
using System.Runtime.CompilerServices;
class RedundantArgument
{
void Write(int num,
[CallerArgumentExpression("num")] string str = "")
=> Console.WriteLine(str);
void Test(int a, int b) => Write(a + b);
}
2026 年 6 月 12 日