Sobes.tech
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:

  1. 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.
  2. Costanti per ogni istanza: A differenza delle costanti statiche (const), i campi readonly possono avere valori diversi per diverse istanze della classe.
  3. 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).
  4. Miglioramento delle prestazioni con le strutture: Per le strutture, i campi readonly possono 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
    // }
}