Ի՞նչ նպատակներով են օգտագործվում C#-ում readonly մոդիֆիկատորով դաշտերը։
sobes.tech AI
Պատասխան AI-ից
C# լեզվում readonly փոփոխականով նշված դաշտը կարող է միայն հայտարարելու պահին կամ դասի կոնստրուկտորում սկզբնավորել: Կարգավիճակը փոփոխելու հնարավորություն չկա սկզբնավորելուց հետո:
Օգտագործման նպատակներ՝
-
Անփոփոխության ապահովում: Հաստատում է, որ դաշտի արժեքը պատահականորեն չի փոխվի օբյեկտի ստեղծումից հետո: Սա բարձրացնում է կոդի հուսալիությունը և հեշտացնում է սխալների հայտնաբերում:
-
Ամեն օրինակին համար հաստատուններ: Վերած statik հաստատունների (
const),readonlyդաշտերը կարող են ունենալ տարբեր արժեքներ տարբեր օրինակների համար: -
Կոնստրուկտորում սկզբնավորել: Հնարավոր է սահմանել դաշտի վերջնական արժեքը կոնստրուկտորի տրամաբանության հիման վրա, ինչը հնարավոր չէ
constդաշտերի դեպքում (որոնք պետք է սկզբնավորել լիտերալով կամ հաստատունով): -
Կատարողականության բարելավում կառուցվածքների դեպքում: Կառուցվածքների համար,
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; // Կոմպիլյացիայի սխալ
// }
}