CA2207: Inizializzare i campi statici dei tipi di valore inline
Proprietà | valore |
---|---|
ID regola | CA2207 |
Title | Inizializzare i campi statici dei tipi di valore inline |
Categoria | Utilizzo |
La correzione causa un'interruzione o meno | Non causa un'interruzione |
Abilitato per impostazione predefinita in .NET 9 | No |
Causa
Un tipo valore dichiara un costruttore statico esplicito.
Descrizione regola
Quando un tipo di valore viene dichiarato, viene sottoposto a un'inizializzazione predefinita in cui tutti i campi di tipo valore vengono impostati su zero e tutti i campi di tipo riferimento sono impostati su null
(Nothing
in Visual Basic). È garantito l'esecuzione di un costruttore statico esplicito solo prima che venga chiamato un costruttore di istanza o un membro statico del tipo. Pertanto, se il tipo viene creato senza chiamare un costruttore di istanza, non è garantito l'esecuzione del costruttore statico.
Se tutti i dati statici vengono inizializzati inline e non viene dichiarato alcun costruttore statico esplicito, i compilatori C# e Visual Basic aggiungono il beforefieldinit
flag alla definizione della classe CIL. I compilatori aggiungono anche un costruttore statico privato che contiene il codice di inizializzazione statica. Questo costruttore statico privato viene garantito di essere eseguito prima di accedere a tutti i campi statici del tipo.
Come correggere le violazioni
Per correggere una violazione di questa regola, inizializzare tutti i dati statici quando vengono dichiarati e rimuovere il costruttore statico.
Quando eliminare gli avvisi
Non escludere un avviso da questa regola.
Regole correlate
CA1810: Inizializzare i campi statici del tipo di riferimento inline