Code inspection: Base member has 'params' parameter, but the overrider does not have it
This inspection reports an override whose last parameter does not use params even though the corresponding base member does.
In C#, the params modifier is part of the method contract. If the base member accepts a variable number of arguments, the override should keep that behavior. Otherwise, callers can get inconsistent API semantics across the hierarchy.
Example
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)
{
}
}
Quick-fix
Two quick-fixes are available:
Add
paramsto the overriding parameter.Remove
paramsfrom the base member if the variable-argument behavior is not intended.
27 March 2026