Prima di C# 8.0, tutti i tipi di riferimento potevano essere nulli. I tipi di riferimento nulli si riferiscono a un insieme di caratteristiche introdotte in C# 8.0 che possono essere utilizzate perMinimizza la probabilità che il tuo codice causi throw in runtime。 I tipi di riferimento nullable includono tre funzionalità per aiutare a evitare queste eccezioni, tra cui la possibilità di contrassegnare esplicitamente i tipi di riferimento come nullabili:
- Analisi del flusso statico ottimizzata per determinare se una variabile è nulla prima che venga scossa dal riferimento.
- Attributi utilizzati per annotare l'API affinché Stream Analytics determini lo stato nullo.
- Annotazioni di variabili che gli sviluppatori possono utilizzare per dichiarare esplicitamente lo stato nullo atteso di una variabile.
L'analisi dello stato nullo e le annotazioni delle variabili sono disabilitate di default per i progetti esistenti, il che significa che tutti i tipi di riferimento sono ancora nullabili. A partire da .NET 6, queste funzionalità sono abilitate di default per i nuovi progetti.
Documentazione:Il login del link ipertestuale è visibile.
Cosa può fare un tipo di riferimento che può essere nulloMinimizza la possibilità che la tua applicazione generi un System.NullReferenceException in tempo reale。
In un progetto che sto sviluppando con .NET 6, creo una proprietà Name per una nuova proprietà che mi richiama con il seguente avvertimento:
Quando si esce dal costruttore, la proprietà non nullabile "Name" deve contenere un valore non nullo. Considera di dichiarare la proprietà come può essere nulla.
Anche se è un avvertimento, è davvero fastidioso! Come correggere questo avviso? Il valore predefinito per l'assegnazione è una stringa vuota, e il codice è il seguente:
Cioè, quando la proprietà non viene assegnata manualmente, il valore predefinito della proprietà è una stringa vuota.
Quando si utilizza una variabile locale,Il tipo è a corda? può anche generare avvisi, come mostrato nella figura sottostante:
Determina se la variabile è nulla prima di usarla, e se lo è, non eseguire il codice sottostante, o pensiLa variabile non può mai essere nulla, può essere usatoArgomentoNullEccezione.ThrowIfNull(assemblyFullName); Gli avvisi possono anche essere rimossi! In altre parole, se la variabile è nulla, lancierà un'eccezione direttamente durante l'esecuzione!
Sommario: C# 8.0 ha introdotto questa caratteristica, e personalmente penso che serve a migliorare il rigore degli sviluppatori ed evitare errori di basso livello.
Per altre soluzioni di metodo che possono essere nulle, si prega di fare visita:Il login del link ipertestuale è visibile.
|