Sobes.tech
Junior

C# да readonly модификатору менен талаалар кандай максаттар үчүн колдонулат?

sobes.tech AI

AIден жооп

C# тилинде readonly модификатору менен белгиленген талаа гана талаанын жарыялануу учурунда же класс конструкторунда башталат. Андан кийин анын мааниси өзгөртүлбөйт.

Колдонуу максаттары:

  1. Өзгөрбөстүктү камсыздоо: Объект түзүлгөндөн кийин талаанын мааниси случайдуу өзгөртүлбөйт деп кепилдик берет. Бул коддун ишенимдүүлүгүн жогорулатат жана ката табууну жеңилдетет.
  2. Ар бир нуска үчүн туруктуу маанилер: Статикалык туруктуулар (const) менен айырмаланып, readonly талаалар ар кандай нускалар үчүн ар башка маанилерге ээ болушу мүмкүн.
  3. Конструктордо баштоо: Конструктордун логикасына негизделген талаанын акыркы маанисин коюуга мүмкүндүк берет, бул const талаалар үчүн мүмкүн эмес (алар литер же туруктуу менен башталууга тийиш).
  4. Түзүмдөр менен иштөөдө иштөөчөндүктү жакшыртуу: Түзүмдөр үчүн, readonly талаалар иштөөчөндүктү жакшырта алат, анткени компилятор белгилүү оптимизацияларды жасай алат, мааниси өзгөрбөй турганын билсе.

Мисал:

public class MyClass
{
    public readonly int ImmutableValue; // Бул жерге же конструктордо башталат
    public readonly string Name;

    // `readonly` талааларга маанини берүү үчүн конструктор
    public MyClass(int value, string name)
    {
        ImmutableValue = value;
        Name = name;
    }

    // Бул метод компиляция катасын жаратат, анткени ал `readonly` талааны өзгөртүүгө аракет кылат
    // public void TryChangeValue(int newValue)
    // {
    //     ImmutableValue = newValue; // Компиляция катасы
    // }
}