S3450 — Parameters with "[DefaultParameterValue]" attributes should also be marked "[Optional]"

Language
C#
Type
Code smell
Severity
Minor
Tags
pitfall

Why is this an issue?

There is no point in providing a default value for a parameter if callers are required to provide a value for it anyway. Thus, [DefaultParameterValue] should always be used in conjunction with [Optional].

Noncompliant code example


public void MyMethod([DefaultParameterValue(5)] int j) //Noncompliant, useless
{
  Console.WriteLine(j);
}

Compliant solution


public void MyMethod(int j = 5)
{
  Console.WriteLine(j);
}

or


public void MyMethod([DefaultParameterValue(5)][Optional] int j)
{
  Console.WriteLine(j);
}

↑ Back to top