Hver er munurinn á „stöðugum“ og „skrifvarnum“ breytum í C #?


svara 1:

Frá MSDN:

Fastar eru óbreytanleg gildi sem eru þekkt við samantekt og gildi þeirra er ekki breytt meðan á öllu tímabilinu stendur.

Skemmtilegar breytur eru einnig óbreytanleg gildi sem þekkt eru í tímabundnum tíma og breyta ekki gildi þeirra fyrir líftíma áætlunarinnar.

Fyrir utan skilgreiningarnar skulum við skilja hvað þetta raunverulega þýðir fyrir okkur.

Notaðu kóðann

Stöðvar:

Fastar eru lýstir með lykilorði „const“.

Fastar ættu að hafa gildi þegar breytileg yfirlýsing er gerð og eru því þekkt á samantektartíma. Ef þú lýsir nú yfir stöðugri breytu, skiptir C # þýðandinn gildi sínu beint í millitungumálinu (MSIL).

Class ConstantExpr {public const int number = 3; } Class program {static void Main (band [] args) {Console.WriteLine (ConstantExpr.number); Hugga.ReadLine (); }}

Eftir að við skiljum að gildi er skipt út beint í MSIL, munu allar breytingar sem þú gerir á const breytunni leiða til svipaðs eftirfarandi

Class program {static void Main (band [] args) {// ConstantExpr.number = 15 // Línan hér að ofan myndi kalla fram villu vegna þess að hún verður kennsla með 3 = 15 innbyrðis // sem er ekki gilt Console.WriteLine (ConstantExpr.number); Hugga.ReadLine (); }}

Fastar eru því óbreytanleg gildi sem eru þekkt á samantektartíma og breyta ekki gildi þeirra fyrir líftíma áætlunarinnar.

Lestu aðeins:

Skemmtilegar breytur eru aðeins frábrugðnar kollegum sínum.

Skrifvarnarbreytur eru þekktar á afturkreistingum og þeim er heimilt að úthluta gildi annað hvort í keyrslutíma eða þegar upphafsstefna er til staðar. Við skulum skilja kóðann aftur hér.

Class ReadOnlyExpr {opinber læsileg int tala = 10; } Class program {static void Main (band [] args) {ReadOnlyExpr readOnlyInstance = nýtt ReadOnlyExpr (); Console.WriteLine (readOnlyInstance.number); }}

Í kóðatöflunni hér að ofan er gildi úthlutað til read-only breytunnar þegar yfirlýsingin er gefin og aðgangur er í gegnum tilvik bekkjarins og ekki í gegnum bekkinn sjálfan. Þú gætir nú haft annað dæmi af bekknum sem hefur read-only númerabreytuna við vissar aðstæður hefur verið úthlutað öðru gildi. Get ég gert það? Já, þar sem read-only breyturnar eru þekktar í keyrslutíma.

Við skulum reyna eftirfarandi:

Class ReadOnlyExpr {opinber læsileg int tala = 10; opinber ReadOnlyExpr () {tala = 20; } opinber ReadOnlyExpr (bool IsDifferentInstance) {tala = 100; }} Class program {static void Main (band [] args) {ReadOnlyExpr readOnlyInstance = nýtt ReadOnlyExpr (); Console.WriteLine (readOnlyInstance.number); ReadOnlyExpr differentInstance = nýr ReadOnlyExpr (satt); Console.WriteLine (differentInstance.number); Hugga.ReadLine (); }}

Mismunandi gildi eru sýnd í útgangi áætlunarinnar í tveimur mismunandi tilvikum bekkjarins.

Skemmtilegar breytur eru því óbreytanleg gildi sem þekkt eru í tímabundnum tíma og breyta ekki gildi þeirra fyrir líftíma áætlunarinnar.


svara 2:

Fastar eru lýstir yfir á samantektartíma með lykilorðinu const og verður að frumstilla meðan á yfirlýsingunni stendur

Ekki er hægt að breyta stöðugu gildinu þegar tíminn er keyrður.

almennur flokkur CodeViewClass

{

opinber const int GST18 = 18;

}

A læsilegur líkist stöðugri hegðun með óbreytanlegu gildi.

Aðalmunurinn er hins vegar sá að það er hægt að frumstilla það í framkvæmdaaðila á hlaupatíma.

Vinsamlegast sjáðu hlekkinn hér að neðan til að fá frekari upplýsingar

Smelltu hér