Sobes.tech
Junior

Ի՞նչ նպատակներով են օգտագործվում C#-ում readonly մոդիֆիկատորով դաշտերը։

sobes.tech AI

Պատասխան AI-ից

C# լեզվում readonly փոփոխականով նշված դաշտը կարող է միայն հայտարարելու պահին կամ դասի կոնստրուկտորում սկզբնավորել: Կարգավիճակը փոփոխելու հնարավորություն չկա սկզբնավորելուց հետո:

Օգտագործման նպատակներ՝

  1. Անփոփոխության ապահովում: Հաստատում է, որ դաշտի արժեքը պատահականորեն չի փոխվի օբյեկտի ստեղծումից հետո: Սա բարձրացնում է կոդի հուսալիությունը և հեշտացնում է սխալների հայտնաբերում:

  2. Ամեն օրինակին համար հաստատուններ: Վերած statik հաստատունների (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; // Կոմպիլյացիայի սխալ
    // }
}