Sobes.tech
Junior

Pentru ce scopuri sunt utilizate câmpurile cu modificatorul readonly în C#?

sobes.tech AI

Răspuns de la AI

Un câmp cu modificatorul readonly în C# poate fi inițializat doar în momentul declarării câmpului sau în constructorul clasei. După inițializare, valoarea sa nu poate fi schimbată.

Scopuri de utilizare:

  1. Asigurarea imuabilității: Garantă că valoarea câmpului nu va fi schimbată accidental după crearea obiectului. Acest lucru crește fiabilitatea codului și facilitează depanarea.
  2. Constante pentru fiecare instanță: Spre deosebire de constantele statice (const), câmpurile readonly pot avea valori diferite pentru diferite instanțe ale clasei.
  3. Inițializare în constructor: Permite stabilirea unei valori finale pentru câmp bazată pe logica constructorului, ceea ce nu este posibil pentru câmpurile const (care trebuie inițializate cu un literal sau constant în timpul compilării).
  4. Îmbunătățirea performanței la lucrul cu structuri: Pentru structuri, câmpurile readonly pot îmbunătăți performanța, deoarece compilatorul poate face anumite optimizări știind că valoarea nu se va schimba.

Exemplu:

public class MyClass
{
    public readonly int ImmutableValue; // Poate fi inițializat aici sau în constructor
    public readonly string Name;

    // Constructor pentru atribuirea valorilor câmpurilor readonly
    public MyClass(int value, string name)
    {
        ImmutableValue = value;
        Name = name;
    }

    // Această metodă va cauza o eroare de compilare, deoarece încearcă să modifice un câmp readonly
    // public void TryChangeValue(int newValue)
    // {
    //     ImmutableValue = newValue; // Eroare de compilare
    // }
}