V3170. Both operands of the '??' operator are identical.
Анализатор обнаружил, что оба операнда, использующиеся в операторе '??' или '??=', одинаковы. Скорее всего, эта операция содержит ошибку. Подобные ошибки могут появиться в результате опечатки или невнимательного copy-paste.
Рассмотрим пример подобной ошибки при использовании оператора '??':
string SomeMethod()
{
String expr1 = Foo();
String expr2 = Bar();
....
return expr1 ?? expr1;
}
Выражение 'expr1 ?? expr1' в методе 'SomeMethod' не имеет смысла, потому что данный метод будет возвращать одно и то же значение вне зависимости от того, содержит ли переменная 'expr1' значение 'null' или нет. Скорее всего, произошла опечатка, и правильный вариант выражения должен выглядеть так:
return expr1 ?? expr2;
Подобная ошибка может быть допущена и при использовании оператора '??=':
void SomeMethod()
{
String expr1 = Foo();
String expr2 = Bar();
....
expr1 ??= expr1;
....
DoSmt(expr1);
}
В данном случае была допущена ошибка, аналогичная описанной в предыдущем примере. Исправленный код:
expr1 ??= expr2;
Данная диагностика классифицируется как: