Przed C# 8.0 wszystkie typy odniesień mogły być zerowe. Typy odniesień zerowych to zestaw cech wprowadzonych w C# 8.0, które mogą być używane doMinimalizuj prawdopodobieństwo, że Twój kod będzie powodował rzuty w czasie wykonywania。 Typy odniesień z możliwością unieważnienia zawierają trzy funkcje, które pomagają uniknąć tych wyjątków, w tym możliwość jawnego oznaczania typów odniesień jako nieważnych:
- Zoptymalizowana analiza statycznego przepływu w celu ustalenia, czy zmienna jest zerowa, zanim zostanie odwrócona.
- Atrybuty używane do adnotacji API, aby Stream Analytics określała stan zerowy.
- Adnotacje zmiennych, które deweloperzy mogą wykorzystać do jawnego deklarowania oczekiwanego stanu zerowego zmiennej.
Analiza stanu zerowego i adnotacje zmiennych są domyślnie wyłączone dla istniejących projektów, co oznacza, że wszystkie typy odniesień są nadal unieważniane. Począwszy od .NET 6, funkcje te są domyślnie włączane dla nowych projektów.
Dokumentacja:Logowanie do linku jest widoczne.
Co oznacza typ odniesienia, który może być null,Minimalizuj ryzyko, że Twoja aplikacja wygeneruje System.NullReferenceException podczas wykonywania。
W projekcie, który tworzę z .NET 6, tworzę właściwość Name dla nowej właściwości, która wyświetla następujące ostrzeżenie:
Podczas wyjścia z konstruktora własność niezerowa "Nazwa" musi zawierać wartość niezerową. Rozważmy deklarowanie własności jako może być null.
Chociaż to ostrzeżenie, jest bardzo irytujące! Jak naprawić to ostrzeżenie? Domyślną wartością przypisania jest pusty ciąg tekstu, a kod wygląda następująco:
To znaczy, gdy własność nie jest przypisana ręcznie, domyślną wartością jest pusty ciąg znaków.
Przy użyciu zmiennej lokalnej,Rodzaj to sznurek? może także generować ostrzeżenia, jak pokazano na poniższym rysunku:
Rozwiązanie: ustal, czy zmienna jest null, zanim jej użyjesz, a jeśli tak, to nie wykonuj poniższego kodu lub myśliszZmienna nigdy nie może być zerowa, może być użyteArgumentNullException.ThrowIfNull(assemblyFullName); Ostrzeżenia również można usunąć! Innymi słowy, jeśli zmienna jest null, wywoła wyjątek bezpośrednio w czasie działania!
Podsumowanie: C# 8.0 wprowadził tę funkcję i osobiście uważam, że ma to na celu poprawę rygoru programistów i uniknięcie popełniania drobnych błędów.
Aby uzyskać więcej rozwiązań metod, które mogą być zerowe, prosimy odnaleźć w:Logowanie do linku jest widoczne.
|