is not null проверяет отсутствие null через сопоставление с образцом и не вызывает перегруженные операторы. Выражение != null может использовать пользовательский оператор !=.
Чем проверка `is not null` отличается от `!= null` в C#?
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.