До C# 8.0 все типы ссылки могли быть нулевыми. Нулевые эталонные типы относятся к набору признаков, введённых в C# 8.0, которые могут использоваться дляМинимизируйте вероятность того, что ваш код вызовет сбросы во время выполнения。 Нулеваемые типы ссылок включают три функции, помогающие избежать этих исключений, включая возможность явно отмечать типы ссылок как нулевых:
- Оптимизированный статический анализ потоков для определения, равна ли переменная нулю, прежде чем она будет отменена.
- Атрибуты, используемые для аннотаций API так, чтобы Stream Analytics определял null состояние.
- Аннотации переменных, которые разработчики могут использовать для явного объявления ожидаемого нулевого состояния переменной.
Анализ нулевого состояния и аннотации переменных по умолчанию отключены для существующих проектов, что означает, что все типы ссылок остаются обнуляемыми. Начиная с .NET 6, эти функции по умолчанию включены для новых проектов.
Документация:Вход по гиперссылке виден.
Что нужно делать с типом отсылки, который может быть null.Минимизируйте вероятность того, что ваше приложение выдаст System.NullReferenceException во время выполнения。
В проекте, который я разрабатываю с .NET 6, я создаю свойство имени для нового свойства, которое подсказывает мне следующее предупреждение:
При выходе из конструктора ненулируемое свойство «Name» должно содержать ненулевое значение. Рассмотрим возможность объявления свойства как нулевым.
Хотя это предупреждение, оно очень раздражает! Как исправить это предупреждение? Значение по умолчанию для присвоения — пустая строка, а код выглядит следующим образом:
То есть, когда свойство не присваивается вручную, его значение по умолчанию — пустая строка.
При использовании локальной переменной,Тип — это верёвка? Также может порождать предупреждения, как показано на рисунке ниже:
Решение: определить, равна ли переменная null, до её использования, и если да, то не выполняйте нижеуказанный код, иначе вы думаетеПеременная никогда не может быть нулевой, может использоватьсяArgumentNullException.ThrowIfNull(assemblyFullName); Предупреждения тоже можно убрать! Другими словами, если переменная нулевая, она выдаст исключение непосредственно во время выполнения!
Резюме: C# 8.0 ввела эту функцию, и лично я считаю, что она нужна для повышения строгости разработчиков и предотвращения низкоуровневых ошибок.
Для получения дополнительных решений методов, которые могут быть нулевыми, пожалуйста, обратитесь к следующему:Вход по гиперссылке виден.
|