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:
- O'zgarmaslikni ta'minlash: Ob'ekt yaratilgandan so'ng, maydonning qiymati tasodifan o'zgartirilmasligini ta'minlaydi. Bu kodning ishonchliligini oshiradi va xatolarni aniqlashni osonlashtiradi.
- Har bir nusxa uchun konstantalar: Statik konstantalar (
const) bilan solishtirganda,readonlymaydonlar sinfning turli nusxalari uchun turli qiymatlarni olishi mumkin. - Konstruktor ichida boshlash: Konstruktor logikasiga asoslangan holda maydonning yakuniy qiymatini belgilash imkonini beradi, bu
constmaydonlar uchun mumkin emas (ular litera yoki konstant bilan boshlanishi kerak). - Strukturalar bilan ishlashda samaradorlikni oshirish: Strukturalar uchun,
readonlymaydonlar 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
// }
}