Ո՞րն է տարբերությունը օրինակելի փոփոխականների և դասի փոփոխականների միջև C #- ում:


պատասխանել 1:

Դուք ճիշտ հարցեր չէիք տալիս, բայց կարծում եմ, որ գիտեմ, թե ինչ եք տալիս:

Օրինակելի փոփոխականը փոփոխական է, որը պետք է անմիջապես ներդնել, նախքան օգտագործեք այն: Լավ, դա, հավանաբար, շատ չօգնեց, քանի որ նախկինում, անկասկած, լսել եք դա: Ահա մի օրինակ, թե ինչ է դա նշանակում:

Եկեք ասենք, որ դուք ստեղծել եք դասարան (C #, բայց դա վերաբերում է նաև VB- ին և մյուսներին), և այդ դասարանում կան մի շարք փոփոխականներ, որոնցից մեկը դրոշ է, որը ցույց է տալիս, երբ լցվում է գազի բաքը: Այս փոփոխական մուտք գործելու համար դուք պետք է ստեղծեք դասի օրինակ:

հասարակական կարգի բաք

մասնավոր int _amountOfGas = 0;

մասնավոր bool _flagFullTank = կեղծ;

մասնավոր bool _flagEmptyTank = ճշմարիտ;

հանրային GasTank = նոր GasTank () {}

հանրային FillTank ()

մինչդեռ (! _ flagFullTank)

_amountOfGas ++;

}

}

public int AmountOfGas

get {Return _amountOfGas;}

սահմանել {_amountOfGas = արժեք;}

}

}

_AmountOfGas արժեքը ցուցադրելու համար դուք պետք է ստեղծեք դասի օրինակ:

GasTank MyGasTank = նոր GasTank ();

MyGasTank- ի միջոցով այնուհետև կարող եք տեսնել ձեր որոնման արժեքը:

int GasLeft = MyGasTank.AmountOfGas;

Լավ, դա շատ պարզ է և ճիշտ իմ գլխավերևում, ուստի այն ամբողջական ծածկագիր չէ: Ես նաև մի փոքր ավելին արեցի, քան պետք էր, որպեսզի ստեղծեի թաքնված կամ մասնավոր փոփոխականներ և հանրային հատկություններ: Մենք թարմացնում ենք դասի ներսում գտնվող մասնավոր փոփոխականները (անհրաժեշտության դեպքում), բայց դրանք մուտք ենք գործում միայն հատկությունների միջոցով: Դա միանգամայն անհրաժեշտ է: Ոչ Եթե ​​դուք դարձրեք դասի մասնավոր հատվածները հանրային, ապա կարող եք մուտք ունենալ բոլոր մասեր MyGasTank- ի միջոցով:

Այժմ, երբ դուք ստեղծում եք ստատիկ փոփոխականներով դասարան, ասեք օգտակար դաս, որը պարունակում է ընդամենը մի քանի հիսուն գործառույթ, որը կարող եք օգտագործել ձեր ծածկագրում: Եթե ​​գործառույթներն ու փոփոխականները սահմանվել են հետևյալ կերպ.

հանրային ստատիկ bool ValidUser;

Ապա դուք կարող եք զանգահարել այս փոփոխականին ձեր կոդով `Utility.ValidUser- ով և ստանալ արժեքը (ճշմարիտ կամ կեղծ):

Սրանք հիմնական կետերն են, բայց դասի ստեղծման ավելի շատ եղանակներ կան: Հետագա օրինակում, կարիք չկա կոմունալ դասը ակնթարթորեն ուղղելու համար (այսինքն ՝ Կոմունալ MyUtility = նոր Կոմունալ ()) Քանի դեռ բոլոր այն բաները, որոնց ուզում եք մուտք գործել, ստատիկորեն սահմանված են, կարող եք պարզապես օգտագործել դրանք:

Հուսով եմ ՝ սա կօգնի:


պատասխանել 2:

C- ում փոփոխականների համար օգտագործվում են չորս տեսակի շրջանակներ.

գլոբալ - որին հասանելի է ցանկացած գործառույթ կամ մոդուլ: Դրանք հայտարարագրվում են առանց հետագա տարածքային սահմանափակումների, որոնք նշվում են «int a;» կետով: ավելացվել են: Դրանք հայտարարված են որևէ գործառույթից դուրս և, հետևաբար, գլոբալ են:

ստատիկ «գլոբալ» - սա գլոբալ փոփոխական է, որին մուտք են գործում ցանկացած գործառույթ, որը հետևում է ՄԻ MՆԱԿԱՐԳ հայտարարությանը (ֆայլ): "Ստատիկ int a;" գործառույթից դուրս հայտարարվածը սահմանվում է մոդուլի շրջանակներում օգտագործման համար (C ֆայլ): Այն ուղղակիորեն հասանելի չէ մոդուլից դուրս, չնայած մոդուլի ներսում գտնվող գործառույթը կարող է ցուցիչը վերադարձնել փոփոխականին:

Տեղական - որին կարելի է հասնել միայն այն բլոկի ներսում, որում հայտարարված է: Այս փոփոխականները գտնվում են բեռի վրա և դառնում են հենակի շրջանակի մի մասը, երբ այլ գործառույթներ են կանչվում: Այս փոփոխականների ցուցիչները կարող են լինել ՄԻԱՅՆ այն գործառույթներին, որոնք կոչվում են բլոկ, որում հայտարարվում են: Եթե ​​գործառույթը վերադարձնում է հասցեն, դա խմբաքանակի խոցելիություն է:

ստատիկ տեղական - Սրանք փոփոխականներ են, որոնք ավելի զսպող են, քան ստատիկ «գլոբալ» -ը, քանի որ անվանման շրջանակը սահմանափակվում է այն բլոկով, որում հայտարարվում է փոփոխականը: Նշում. Այս փոփոխականում պարունակվող արժեքը փոխանցվում է և հասանելի է բլոկին `հետագա օգտագործման համար: Այս փոփոխականները տուփի վրա չեն, ուստի դրանց ցուցիչները կարող են վերադարձվել: