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