Sobes.tech
Junior

Na aké účely sa používajú polia s modifikátorom readonly v C#?

sobes.tech AI

Odpoveď od AI

Pole s modifikátorom readonly v jazyku C# môže byť inicializované iba v okamihu deklarácie poľa alebo v konštruktore triedy. Po inicializácii jeho hodnota nemôže byť zmenená.

Ciele použitia:

  1. Zabezpečenie nemennosti: Zaručuje, že hodnota poľa nebude náhodne zmenená po vytvorení objektu. To zvyšuje spoľahlivosť kódu a uľahčuje ladenie.
  2. Konštanty pre každý príklad: Na rozdiel od statických konštánt (const), polia readonly môžu mať rôzne hodnoty pre rôzne inštancie triedy.
  3. Inicializácia v konštruktore: Umožňuje nastaviť konečnú hodnotu poľa na základe logiky konštruktora, čo nie je možné pre const polia (ktoré musia byť inicializované literálom alebo konštantou počas kompilácie).
  4. Zlepšenie výkonu pri práci so štruktúrami: Pre štruktúry môžu readonly polia zlepšiť výkon, pretože prekladač môže vykonávať určité optimalizácie, keďže vie, že hodnota sa nezmení.

Príklad:

public class MyClass
{
    public readonly int ImmutableValue; // Môže byť inicializované tu alebo v konštruktore
    public readonly string Name;

    // Konštruktor na priradenie hodnôt readonly poliam
    public MyClass(int value, string name)
    {
        ImmutableValue = value;
        Name = name;
    }

    // Táto metóda spôsobí chybu pri kompilácii, pretože sa snaží zmeniť readonly pole
    // public void TryChangeValue(int newValue)
    // {
    //     ImmutableValue = newValue; // Chyba pri kompilácii
    // }
}