Sobes.tech
Junior

Mire használják a readonly módosítóval ellátott mezőket C#-ban?

sobes.tech MI

Válasz az MI-től

C# nyelvben a readonly módosítóval ellátott mező csak a mező deklarálásakor vagy az osztály konstruktorában inicializálható. Az inicializálás után értéke nem módosítható.

Felhasználási célok:

  1. Változhatatlanság biztosítása: Biztosítja, hogy az objektum létrehozása után a mező értéke véletlenül se változzon meg. Ez növeli a kód megbízhatóságát és megkönnyíti a hibakeresést.
  2. Minden példányhoz állandók: Ellentétben a statikus const-okkal, a readonly mezők különböző példányokban eltérő értékeket vehetnek fel.
  3. Inicializálás a konstruktorban: Lehetővé teszi, hogy a mező végső értékét a konstruktor logikája alapján állítsuk be, ami nem lehetséges const mezőknél (amelyeket literál vagy állandó értékkel kell inicializálni a fordítási időben).
  4. Teljesítmény növelése szerkezetek esetén: Szerkezeteknél a readonly mezők javíthatják a teljesítményt, mivel a fordító bizonyos optimalizációkat végezhet, tudva, hogy az érték nem fog változni.

Példa:

public class MyClass
{
    public readonly int ImmutableValue; // Itt vagy a konstruktorban inicializálható
    public readonly string Name;

    // Konstruktor a readonly mezők értékének hozzárendeléséhez
    public MyClass(int value, string name)
    {
        ImmutableValue = value;
        Name = name;
    }

    // Ez a metódus fordítási hibát fog okozni, mivel megpróbál módosítani egy readonly mezőt
    // public void TryChangeValue(int newValue)
    // {
    //     ImmutableValue = newValue; // Fordítási hiba
    // }
}