Junior
A cosa servono i campi con il modificatore readonly in C#?
sobes.tech AI
Risposta dell'AI
Un campo con il modificatore readonly in C# può essere inizializzato solo al momento della dichiarazione del campo o nel costruttore della classe. Dopo l'inizializzazione, il suo valore non può essere modificato.
Obiettivi di utilizzo:
- Garantire l'immutabilità: Assicura che il valore del campo non venga modificato accidentalmente dopo la creazione dell'oggetto. Questo aumenta l'affidabilità del codice e semplifica il debug.
- Costanti per ogni istanza: A differenza delle costanti statiche (
const), i campireadonlypossono avere valori diversi per diverse istanze della classe. - Inizializzazione nel costruttore: Permette di impostare un valore finale per il campo basato sulla logica del costruttore, cosa che non è possibile per i campi
const(che devono essere inizializzati con un literal o una costante durante la compilazione). - Miglioramento delle prestazioni con le strutture: Per le strutture, i campi
readonlypossono migliorare le prestazioni, poiché il compilatore può effettuare alcune ottimizzazioni sapendo che il valore non cambierà.
Esempio:
public class MyClass
{
public readonly int ImmutableValue; // Può essere inizializzato qui o nel costruttore
public readonly string Name;
// Costruttore per assegnare valori ai campi readonly
public MyClass(int value, string name)
{
ImmutableValue = value;
Name = name;
}
// Questo metodo causerà un errore di compilazione, poiché tenta di modificare un campo readonly
// public void TryChangeValue(int newValue)
// {
// ImmutableValue = newValue; // Errore di compilazione
// }
}