# 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;

Данная диагностика классифицируется как:

CWE-670