Sobes.tech
Junior

K čemu slouží pole s modifikátorem readonly v C#?

sobes.tech AI

Odpověď od AI

Pole s modifikátorem readonly v jazyce C# může být inicializováno pouze v okamžiku deklarace pole nebo v konstruktoru třídy. Po inicializaci jeho hodnota nemůže být změněna.

Cíle použití:

  1. Zajištění neměnnosti: Zaručuje, že hodnota pole nebude náhodně změněna po vytvoření objektu. To zvyšuje spolehlivost kódu a usnadňuje ladění.
  2. Konstanty pro každý instance: Na rozdíl od statických konstant (const) mohou readonly pole mít různé hodnoty pro různé instance třídy.
  3. Inicializace v konstruktoru: Umožňuje nastavit konečnou hodnotu pole na základě logiky konstruktoru, což není možné u const polí (která musí být inicializována literálem nebo konstantou při kompilaci).
  4. Zlepšení výkonu při práci se strukturami: Pro struktury mohou readonly pole zlepšit výkon, protože překladač může provádět určité optimalizace s vědomím, že hodnota se nezmění.

Příklad:

public class MyClass
{
    public readonly int ImmutableValue; // Může být inicializováno zde nebo v konstruktoru
    public readonly string Name;

    // Konstruktor pro přiřazení hodnot readonly polím
    public MyClass(int value, string name)
    {
        ImmutableValue = value;
        Name = name;
    }

    // Tato metoda způsobí chybu při kompilaci, protože se snaží změnit readonly pole
    // public void TryChangeValue(int newValue)
    // {
    //     ImmutableValue = newValue; // Chyba při kompilaci
    // }
}