コードインスペクション: 基本メンバーには「params」パラメーターがありますが、オーバーライドにはありません
このインスペクションは、対応する基本メンバーが params を使用しているにもかかわらず、最後のパラメーターは使用していないオーバーライドを報告します。
C# では、 params 修飾子はメソッド契約の一部です。 基本メンバーが可変個の引数を受け入れる場合、オーバーライドもその動作を維持する必要があります。 そうしないと、呼び出し元は階層全体で一貫性のない API セマンティクスに遭遇する可能性があります。
サンプル
public class Base
{
public virtual void Log(params object[] values)
{
}
}
public class Derived : Base
{
public override void Log(object[] values)
{
}
}
public class Base
{
public virtual void Log(params object[] values)
{
}
}
public class Derived : Base
{
public override void Log(params object[] values)
{
}
}
クイックフィックス
2 つの即効性のある解決策があります。
オーバーライドパラメーターに
paramsを追加します。可変引数の動作が意図したものでない場合は、基本メンバーから
paramsを削除してください。
2026 年 6 月 12 日