Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 19482|Відповідь: 2

[Джерело] C# 8.0 може бути типом нульового посилання

[Копіювати посилання]
Опубліковано 2022-3-26 16:40:21 | | | |
До C# 8.0 усі типи посилань могли бути нульовими. Нульові типи посилань стосуються набору ознак, введених у C# 8.0, які можуть використовуватися дляМінімізуйте ймовірність того, що ваш код спричинить кидки під час виконання。 Нульовані типи посилань включають три функції, які допомагають уникнути цих винятків, зокрема можливість явно позначати типи посилань як нульовані:

  • Оптимізовано статичний аналіз потоків для визначення, чи є змінна нульовою до того, як вона буде позбавлена посилання.
  • Атрибути, які використовуються для анотації API так, щоб Stream Analytics визначала нульовий стан.
  • Анотації змінних, які розробники можуть використовувати для явного оголошення очікуваного нульового стану змінної.


Аналіз нульового стану та анотації змінних за замовчуванням вимкнені для існуючих проєктів, що означає, що всі типи посилань залишаються нульованими. Починаючи з .NET 6, ці функції за замовчуванням увімкнені для нових проєктів.

Документації:Вхід за гіперпосиланням видно.

Що потрібно зробити тип референсу, який може бути нульовимМінімізуйте ймовірність того, що ваш додаток видасть System.NullReferenceException під час виконання

У проєкті, який я розробляю з .NET 6, я створюю властивість Ім'я для нової властивості, яка підказує мені наступне попередження:

При виході з конструктора ненульова властивість «Ім'я» повинна містити ненульове значення. Розглянемо оголошення властивості такою, що може бути нульовою.


Хоч це й попередження, але це дуже дратує! Як виправити це попередження? Значення за замовчуванням для призначення — це порожній рядок, а код виглядає так:

Тобто, коли властивість не призначається вручну, значення за замовчуванням є порожнім рядком.

При використанні локальної змінної,Тип — це мотузка? може також генерувати попередження, як показано на рисунку нижче:



Рішення: визначте, чи є змінна null, перш ніж її використовувати, і якщо так, не виконуйте наведений нижче код, інакше ви думаєтеЗмінна ніколи не може бути нульовою, може використовуватисяArgumentNullException.ThrowIfNull(assemblyFullName); Попередження також можна видаляти! Інакше кажучи, якщо змінна дорівнює нулю, вона видасть виключення безпосередньо під час виконання!

Резюме: C# 8.0 впровадила цю функцію, і я особисто вважаю, що вона спрямована на підвищення вимогливості розробників і уникнення деяких дрібних помилок.

Для отримання додаткових рішень методів, які можуть бути нульовими, будь ласка, дивіться:Вхід за гіперпосиланням видно.





Попередній:Запит до віддаленої адреси Git поточного проєкту
Наступний:ASP.NET Core (дванадцять) фронтенд JS, пакетування CSS та стиснення
Опубліковано 2022-3-26 20:57:32 |
Вчитися вчитися
Опубліковано 2022-3-28 08:23:47 |
Приходь і вчися
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com