# V3228. It is possible that an assigned variable should be used in the next condition. Consider checking for misprints.

Анализатор обнаружил потенциальную ошибку: вместо одной переменной была проверена другая, имеющая схожее имя.

Рассмотрим пример:

    bool UserProcessing()
    {
      ....
      var user1 = FindUser(id1);

      if (user1 == null)
        return false;
      ....
      var user2 = FindUser(id2);

      if (user1 == null)
        return false;
      ....
    }

В данном примере инициализируются две переменные со схожими именами: `user1` и `user2`. После инициализации переменных значение каждой из них должно проверяться на равенство с `null`. Однако из-за опечатки в условии второго `if` переменная `user2` не будет проверена.

Исправленный вариант:

    bool UserProcessing()
    {
      ....
      var user1 = FindUser(id1);

      if (user1 == null)
        return false;
      ....
      var user2 = FindUser(id2);

      if (user2 == null)
        return false;
      ....
    }

Рассмотрим еще один случай:

    private readonly int _value;
    ....
    public CustomType(int value)
    {
      ....
      _value = value < 0 ? 0 : value;

      if (value == 0) { .... }
      ....
    }

Полю `_value` присваивается значение параметра `value`, ограниченное положительными значениями. Далее вместо валидного значения поля на равенство с `0` проверяется параметр, который все также может иметь отрицательное значение.

Исправленный вариант:

    private readonly int _value;
    ....
    public CustomType(int value)
    {
      ....
      _value = value < 0 ? 0 : value;

      if (_value == 0) { .... }
      ....
    }

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

CWE-697