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