Чем проверка `is not null` отличается от `!= null` в C#?

is not null проверяет отсутствие null через сопоставление с образцом и не вызывает перегруженные операторы. Выражение != null может использовать пользовательский оператор !=.

Короткий ответ

Что ответить на собеседовании

is not null проверяет отсутствие null через сопоставление с образцом и не вызывает перегруженные операторы. Выражение != null может использовать пользовательский оператор !=.

Подробный разбор

Ответ с пояснениями

is not null проверяет отсутствие null через сопоставление с образцом и не вызывает перегруженные операторы. Выражение != null может использовать пользовательский оператор !=.

if (value is not null)
{
    // Проверка не зависит от перегрузки == или !=.
}

Для обычного ссылочного типа без перегруженных операторов результат обычно совпадает. Различие существенно для типов с собственной семантикой равенства: value != null может выполнять дополнительный код и возвращать неожиданный для проверки ссылки результат. Для Nullable<T> pattern также позволяет проверить наличие значения. is not null доступно начиная с C# 9.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее