Первая мысль, которая, вероятно, приходит в голову, когда думаешь о проверке NULL, - это стандартное сравнение, такое как if (foo == null) { ... }
, но есть и другие варианты; лучшие варианты.
Начиная с C # 7.0, мы можем использовать ключевое слово is
. Это также позволяет нам проверять тип, поэтому мы можем написать if (foo is null) { ... }
, но мы также можем написать что-то вроде:
if (foo is Animal) { ... } // As opposed to if (foo.GetType() == typeof(Animal)) { ... }
Начиная с C # 9.0, мы можем комбинировать is
с not
, чтобы получить выражение, подобное if (foo is not null) { ... }
, вместо того, чтобы заключать его в проверку отрицания.
Другой способ написания is not
- использовать такие открывающиеся фигурные скобки:
if (foo is { }) { ... }
Сначала это может показаться запутанным, но это часть некоторого нового сопоставления шаблонов свойств в C # 8.0, которое позволяет нам делать немного больше, чем просто проверять допустимость значений NULL. В следующем примере показано, как мы можем использовать этот шаблон для сопоставления свойств объекта и использования их в качестве локальных переменных.
Как видите, этот шаблон позволяет делать три вещи в приведенных выше примерах:
- Убедитесь, что переменная не равна нулю
- Если не null, присвоить локальной переменной
- Проверьте свойства в переменной и назначьте эти локальным переменным
Это более короткий удобный способ написания проверок допустимости значений NULL с использованием немного другого синтаксиса. Вы можете увидеть полный рабочий пример здесь.
Подробнее о Pattern Matching от Microsoft здесь.