Condividi tramite


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 8 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.

CA1810: Inizializzare i campi statici del tipo di riferimento inline