Junior
Kokiais tikslais naudojami laukai su readonly modifikatoriumi C#?
sobes.tech AI
Atsakymas iš AI
C# kalboje readonly modifikatoriumi pažymėtas laukas gali būti inicijuotas tik deklaracijos metu arba klasės konstruktoriuje. Po inicializacijos jo reikšmė negali būti keičiama.
Naudojimo tikslai:
- Neišardomumo užtikrinimas: Užtikrina, kad lauko reikšmė atsitiktinai nepasikeis po objekto sukūrimo. Tai didina kodo patikimumą ir palengvina klaidų paiešką.
- Kiekvieno egzemplioriaus konstantos: Skirtingai nuo statinių konstantų (
const),readonlylaukai gali turėti skirtingas reikšmes skirtinguose klasės egzemplioriuose. - Inicijavimas konstruktoriuje: Leidžia nustatyti galutinę lauko reikšmę, pagrįstą konstruktoriaus logika, kas nėra įmanoma
constlaukams (jie turi būti inicijuoti literalu arba konstanta kompiliacijos metu). - Našumo gerinimas dirbant su struktūromis: Struktūroms,
readonlylaukai gali pagerinti našumą, nes kompiliatorius gali atlikti tam tikras optimizacijas, žinodamas, kad reikšmė nesikeis.
Pavyzdys:
public class MyClass
{
public readonly int ImmutableValue; // Gali būti inicijuotas čia arba konstruktoriuje
public readonly string Name;
// Konstruktorius `readonly` laukų reikšmėms priskirti
public MyClass(int value, string name)
{
ImmutableValue = value;
Name = name;
}
// Šis metodas sukels kompiliacijos klaidą, nes bando pakeisti `readonly` lauką
// public void TryChangeValue(int newValue)
// {
// ImmutableValue = newValue; // Kompiliacijos klaida
// }
}