Constant and ReadOnly
Mahalagang maunawaan ang mga konsepto ng C # programming bago ka magpatuloy sa pagpapatupad ng code. Bago kami lumipat sa mga pagkakaiba sa pagitan ng const at readonly, unawain muna ang mga keyword at kung paano sila ginagamit sa isang programa. Ang parehong ay ang pinaka-karaniwang mga keyword na ginagamit sa C # programming at talaga para sa parehong layunin. Gayunpaman, ang parehong mga keyword ay ibang-iba sa bawat isa. Ang Const ay isang nakalaang salita na ginamit upang kumatawan sa mga tapat na halaga at tinutukoy nito na ang isang halaga ay hindi maaaring mabago pagkatapos mag-compile-time, samantalang readonly ay isang modifier na maaaring magamit sa mga patlang at ang halaga nito ay maaaring mabago sa panahon ng runtime. Tingnan natin ang ilan sa mga pangunahing pagkakaiba sa pagitan ng const at readonly.
Ano ang isang Const?
Ang Const ay tumutukoy sa isang pare-pareho na variable at ang halaga na kailangang italaga nang isang beses lamang, sa panahon ng deklarasyon. Kapag ang keyword const ay ginagamit sa panahon ng isang deklarasyon, ito ay nagiging isang palaging kahulugan ang halaga ay nananatiling pare-pareho at hindi maaaring mabago sa buong programa. Ito ay higit pa sa isang nakalaang salita na tumutukoy na ang isang halaga ay hindi dapat mabago pagkatapos mag-compile-time. Ang isang const ay ganap na static sa pamamagitan ng default, kaya maaari itong tawagin sa pangalan ng klase gamit ang "Classname.VariableName". Ang patuloy na mga halaga ay tinatawag ding literal. Maaari itong maging ng anumang pangunahing uri ng data tulad ng isang integer const, isang floating const, o isang string literal.
Ano ang ReadOnly?
Ang Readonly keyword ay isang modifier na magagamit lamang sa mga patlang ngunit hindi lokal na variable. Ang isang readonly na patlang ay maaaring initialize alinman sa panahon ng deklarasyon o sa loob ng isang tagapagbuo sa parehong klase, kaya ang mga halaga ay maaaring iba para sa iba't ibang mga executions ng programa depende sa constructor na ginamit. Ang readonly na keyword ay tumutukoy na ang isang instance variable ng isang bagay ay hindi maaaring baguhin at anumang pagsubok na baguhin ito pagkatapos ng deklarasyon ay nagreresulta sa error sa compilation. Ang variable ay hindi maging hindi mababago hanggang matapos ang pagpapatupad. Ang mga variable ay ginawang readonly lamang upang ihinto ang pagtawag sa code mula sa hindi sinasadyang pagbabago nito matapos itong itayo.
Pagkakaiba sa pagitan ng Constant at ReadOnly
Ang Constant (const) na keyword ay walang anuman kundi mga variable na hindi nababago ang halaga na kung saan ay maaari lamang ma-initialize sa oras ng pag-compile. Ang mga palaging halaga na ito ay tinatawag ding literal. Pinapayagan lamang nito sa amin na tukuyin kung ang isang variable ay maaaring baguhin o hindi. Sa simpleng mga termino, ang mga constants ay ganap na static at dapat sila ay mai-initialize bago sila ay gagamitin sa programa. Readonly keyword, sa kabilang banda, ay isang modifier na maaaring magamit sa mga patlang at ang halaga ng kung saan ay maaaring mabago sa panahon ng runtime. Pinipigilan nito ang mga larangan na mabago at ang mga halaga na maaaring itakda sa pamamagitan ng mga variable ng reference.
Ang isang const ay static sa pamamagitan ng default at ang mga halaga na dapat italaga sa panahon ng variable na deklarasyon na nangangahulugan na ang mga halaga ay itinalaga lamang sa oras ng pag-compile. Ang isang pare-pareho ay ipinahayag gamit ang keyword na "const". Ang pagsisimula ng isang pare-parehong larangan ay dapat na isang patuloy na pagpapahayag at maaaring hindi mabago. Sa madaling salita, ang const ay isang pare-pareho na oras ng pag-compile. Ang isang patlang na readonly, sa kabilang banda, ay maaari lamang na-initialize sa antas ng klase hindi sa loob ng paraan at ang patlang ay hindi maaaring baguhin pagkatapos initialization. Sa ibang salita, ang mga readonly na variable ay maaaring magsimula sa panahon ng deklarasyon o sa loob ng isang tagapagbuo.
Ang isang halaga ng const ay inilalagay nang direkta sa code habang ito ay nagsisilbing kapalit ng time-compile. Ang tagatala ay naglalagay ng pare-pareho na halaga sa metadata ng kapulungan na tumutukoy sa pare-pareho at naka-embed ang halaga sa IL code mismo pagkatapos ng pagsisimula, kaya walang memorya ang kinakailangan para sa mga constants sa runtime para sa paglalaan. Ang halaga ng readonly ay hindi pare-pareho at ito ay naka-imbak sa loader magbunton ang memory na kung saan ay hindi maaaring ilalaan hanggang sa uri nito ay load. Ang mga readonly na patlang ay naka-imbak sa mga dynamic na memorya upang ang mga halaga ay maaari lamang makuha sa runtime.
Kahit na ang parehong mga keyword ay halos ginagamit para sa parehong layunin, mayroon silang iba't ibang mga binary na bersyon semantika. Kapag ang isang expression ay nagsasaad ng isang pare-pareho, ang compiler embeds ang halaga sa compile-time. Kaya kung ang halaga ay ginagamit sa isang iba't ibang pagpupulong, ang orihinal na pagpupulong ay kailangang ma-update at ang halaga ay dapat mabago. Ang mga pagbabago sa pagpupulong ay hindi makikita hanggang sa ito ay recompiled. Ang halaga ay hindi nakuha hanggang sa runtime kapag ang isang expression ay tumutukoy sa isang readonly field. Kung ang halaga ay binago sa isang iba't ibang pagpupulong, ang mga pagbabago ay nakikita sa pagpupulong sa lalong madaling ito ay na-load nang hindi na kinakailangang mag-recompile ito.
Const vs. Readonly: Paghahambing Tsart
Buod ng Const kumpara sa Readonly
Ang parehong mga keyword ay ginagamit para sa parehong bagay na upang ipahayag ang isang miyembro upang ang mga halaga ay hindi maaaring pagbabago sa buong programa. Gayunpaman, ang const keyword ay ibang-iba mula sa readonly keyword. Const ay isang pare-pareho ang variable ang halaga ng kung saan ay dapat na-initialize sa sumulat ng libro-time, habang ang isang readonly patlang ay maaari lamang na-initialize sa antas ng klase, alinman sa panahon ng deklarasyon o sa loob ng tagapagbuo. Ang Const ay isang regular na pag-compile-time samantalang readonly na mga patlang ay read-only. Maaaring ma-access ang mga variable ng Constance gamit ang "Classname.VariableName" habang ang mga readonly variable ay maaaring ma-access gamit ang "InstanceName.VariableName".Bukod dito, ang mga const variable ay maaaring ideklara sa mga pamamaraan, samantalang ang mga bukas na patlang ay hindi maaaring ideklara sa mga pamamaraan.