In the interests of keeping code clean, the simplest possible conditional syntax should be used. That means
- using the
??=
operator for a self-assign-if-not-null operation,
- using the
??
operator for an assign-if-not-null operation, and
- using the ternary operator
?:
for assignment to a single variable.
Noncompliant code example
object a = null, b = null, x;
if (a != null) // Noncompliant; needlessly verbose
{
x = a;
}
else
{
x = b;
}
x = a != null ? a : b; // Noncompliant; better but could still be simplified
x = (a == null) ? new object() : a; // Noncompliant
if (condition) // Noncompliant
{
x = a;
}
else
{
x = b;
}
if (a == null) // Noncompliant
a = new object();
var y = null ?? new object(); // Noncompliant
a = a ?? new object(); // Noncompliant for C# 8
Compliant solution
object x;
x = a ?? b;
x = a ?? b;
x = a ?? new object();
x = condition ? a : b;
a ??= new object();
var y = new object();
a ??= new object();