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:
- 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.
- Minden példányhoz állandók: Ellentétben a statikus
const-okkal, areadonlymezők különböző példányokban eltérő értékeket vehetnek fel. - 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
constmezőknél (amelyeket literál vagy állandó értékkel kell inicializálni a fordítási időben). - Teljesítmény növelése szerkezetek esetén: Szerkezeteknél a
readonlymező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
// }
}