Sobes.tech
Junior

C# da readonly modifikatori bilan maydonlar qanday maqsadlarda ishlatiladi?

sobes.tech AI

AIdan javob

C# tilida readonly modifikatori bilan belgilangan maydon faqat maydon e'lon qilinayotgan paytda yoki sinfning konstruktorida boshlanishi mumkin. So'ngra uning qiymati o'zgartirilmaydi.

Foydalanish maqsadlari:

  1. O'zgarmaslikni ta'minlash: Ob'ekt yaratilgandan so'ng, maydonning qiymati tasodifan o'zgartirilmasligini ta'minlaydi. Bu kodning ishonchliligini oshiradi va xatolarni aniqlashni osonlashtiradi.
  2. Har bir nusxa uchun konstantalar: Statik konstantalar (const) bilan solishtirganda, readonly maydonlar sinfning turli nusxalari uchun turli qiymatlarni olishi mumkin.
  3. Konstruktor ichida boshlash: Konstruktor logikasiga asoslangan holda maydonning yakuniy qiymatini belgilash imkonini beradi, bu const maydonlar uchun mumkin emas (ular litera yoki konstant bilan boshlanishi kerak).
  4. Strukturalar bilan ishlashda samaradorlikni oshirish: Strukturalar uchun, readonly maydonlar samaradorlikni oshirishi mumkin, chunki kompilyator qiymat o'zgarmasligini bilgan holda ba'zi optimallashtirishlarni amalga oshirishi mumkin.

Misol:

public class MyClass
{
    public readonly int ImmutableValue; // Bu yerda yoki konstruktor ichida boshlanishi mumkin
    public readonly string Name;

    // Readonly maydonlarga qiymat berish uchun konstruktor
    public MyClass(int value, string name)
    {
        ImmutableValue = value;
        Name = name;
    }

    // Bu metod kompilatsiya xatosi keltirib chiqaradi, chunki u readonly maydonni o'zgartirishga harakat qiladi
    // public void TryChangeValue(int newValue)
    // {
    //     ImmutableValue = newValue; // Kompilatsiya xatosi
    // }
}