﻿# V3019\. It is possible that an incorrect variable is compared with null after type conversion using 'as' keyword\.

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

Анализатор заметил в коде следующую ситуацию\. Сначала объект базового класса приводится к производному классу с помощью оператора 'as'\. А затем этот же объект проверяется на значение null, хотя в этом случае скорее всего предполагалось проверить на null объект производного класса\.

Рассмотрим следующий пример\. Здесь возможна ситуация, когда объект baseObj не будет являться экземпляром класса Derived\. В этом случае при вызове функции Func программа упадёт с NullReferenceException\. Анализатор выдаст предупреждение на этот код, указав две строки\. Первая строка \- это то место, где объект базового класса проверяется на null\. Вторая строка \- это то место, где объект базового класса приводится к объекту производного класса\.

```cpp
Base baseObj;
Derived derivedObj = baseObj as Derived;
if (baseObj != null)
{
    derivedObj.Func();
}
```

Скорее всего в этом примере предполагалось проверить на null объект производного класса перед использованием\. Исправленный вариант кода:

```cpp
Base baseObj;
Derived derivedObj = baseObj as Derived;
if (derivedObj != null)
{
    derivedObj.Func();
}
```