CA2104: Non dichiarare tipi di riferimento modificabili in sola lettura
Articolo | Valore |
---|---|
ID regola | CA2104 |
Category | Microsoft.Security |
Modifica | Nessuna interruzione |
Nota
La regola CA2104 è obsoleta e verrà rimossa in una versione futura di Visual Studio. Non verrà implementata come analizzatore a causa dell'analisi complessa necessaria per determinare l'effettiva immutabilità di un tipo.
Causa
Un tipo visibile esternamente contiene un campo in sola lettura visibile esternamente che costituisce un tipo di riferimento modificabile.
Nota
Questa regola è stata deprecata. Per altre informazioni, vedere Regole deprecate.
Descrizione regola
Un tipo modificabile è un tipo i cui dati di istanza possono essere modificati. La System.Text.StringBuilder classe è un esempio di tipo riferimento modificabile. Contiene membri che possono modificare il valore di un'istanza della classe . Un esempio di tipo riferimento non modificabile è la System.String classe . Dopo che è stata creata un'istanza, il valore non può mai cambiare.
Il modificatore di sola lettura (readonly in C#, ReadOnly in Visual Basic e const in C++) su un campo di tipo riferimento (o C++un puntatore in) impedisce che il campo venga sostituito da un'istanza diversa del tipo di riferimento. Tuttavia, il modificatore non impedisce la modifica dei dati dell'istanza del campo tramite il tipo di riferimento.
Questa regola può inavvertitamente mostrare una violazione per un tipo che, di fatto, non è modificabile. In questo caso, è possibile eliminare l'avviso.
I campi di matrice di sola lettura sono esenti da questa regola, ma causano invece una violazione dei campi CA2105: i campi matrice non devono essere di sola lettura.
Come correggere le violazioni
Per correggere una violazione di questa regola, rimuovere il modificatore di sola lettura o, se una modifica di rilievo è accettabile, sostituire il campo con un tipo non modificabile.
Quando eliminare gli avvisi
È possibile eliminare un avviso da questa regola se il tipo di campo non è modificabile.
Esempio
Nell'esempio seguente viene illustrata una dichiarazione di campo che causa una violazione di questa regola:
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per