Înainte de C# 8.0, toate tipurile de referință puteau fi nule. Tipurile de referință nule se referă la un set de caracteristici introduse în C# 8.0 care pot fi folosite pentruMinimizează probabilitatea ca codul tău să cauzeze throw-uri în timp real。 Tipurile de referință anulabile includ trei caracteristici care ajută la evitarea acestor excepții, inclusiv posibilitatea de a marca explicit tipurile de referință ca anulabile:
- Analiză statică optimizată a fluxului pentru a determina dacă o variabilă este nulă înainte ca aceasta să nu fie referențiată.
- Atribute folosite pentru a adnota API-ul astfel încât Stream Analytics să determine starea nulă.
- Adnotări de variabile pe care dezvoltatorii le pot folosi pentru a declara explicit starea nulă așteptată a unei variabile.
Analiza stării nule și adnotările variabilelor sunt dezactivate implicit pentru proiectele existente, ceea ce înseamnă că toate tipurile de referință sunt încă nullabile. Începând cu .NET 6, aceste funcții sunt activate implicit pentru proiectele noi.
Documentație:Autentificarea cu hyperlink este vizibilă.
Ce tip de referință care poate fi nul este să facăMinimizează șansa ca aplicația ta să afișeze un System.NullReferenceException la rulare。
Într-un proiect pe care îl dezvolt cu .NET 6, creez o proprietate Name pentru o proprietate nouă care îmi afișează următorul avertisment:
La ieșirea din constructor, proprietatea neanulabilă "Nume" trebuie să conțină o valoare ne-nulă. Ia în considerare declararea proprietății ca poate fi nulă.
Deși este un avertisment, este foarte enervant! Cum pot remedia acest avertisment? Valoarea implicită pentru atribuire este un șir gol, iar codul este următorul:
Adică, atunci când proprietatea nu este atribuită manual, valoarea implicită a proprietății este un șir gol.
Când se folosește o variabilă locală,Tipul este cu sfoară? De asemenea, pot genera avertismente, așa cum se arată în figura de mai jos:
Soluția, determinați dacă variabila este nulă înainte de a o folosi, iar dacă este, nu executați codul de mai jos, sau așa credețiVariabila nu poate fi niciodată nulă, poate fi folositArgumentNullException.ThrowIfNull(assemblyFullName); Avertismentele pot fi, de asemenea, eliminate! Cu alte cuvinte, dacă variabila este nulă, va genera o excepție direct în timpul runtime-ului!
Rezumat: C# 8.0 a introdus această funcție și, personal, simt că este pentru a îmbunătăți rigoarea dezvoltatorilor și a evita să facă unele greșeli de nivel scăzut.
Pentru mai multe soluții de metodă care pot fi nulle, vă rugăm să consultați:Autentificarea cu hyperlink este vizibilă.
|