Konstantní a četné

Anonim

Předtím, než budete pokračovat v implementaci kódu, je důležité porozumět koncepcí programování C #. Předtím, než skočíme k rozdílům mezi const a readonly, nejprve pochopíme klíčová slova a jak jsou v programu používány. Oba jsou nejběžnější klíčová slova používaná v programování C # a v podstatě pro stejný účel. Nicméně obě klíčová slova se od sebe navzájem velmi liší. Konst je rezervované slovo používané k reprezentování konstantních hodnot a specifikuje, že hodnota nemůže být změněna po kompilačním čase, zatímco readonly je modifikátor, který lze použít na polích a jehož hodnota může být změněna během běhu. Podívejme se na některé klíčové rozdíly mezi const a readonly.

Co je Konst?

Const označuje konstantní proměnnou, jejíž hodnota musí být přidělena pouze jednou během deklarace. Když se při deklaraci použije klíčové slovo const, stává se konstantou, což znamená, že hodnota zůstává konstantní a nelze jej měnit během celého programu. Je to spíše vyhrazené slovo, které určuje, že hodnota nesmí být po kompilaci změněna. Konst je implicitně statický ve výchozím nastavení, takže může být volán s názvem třídy pomocí "Classname.VariableName". Konstantní hodnoty jsou také nazývány jako literály. Může mít libovolný základní datový typ, jako je celé číslo const, plovoucí konst nebo řetězec literal.

Co je ReadOnly?

Klíčové slovo Readonly je modifikátor, který lze použít pouze na polích, nikoliv však na lokálních proměnných. Pole readonly lze inicializovat buď v okamžiku deklarace, nebo uvnitř konstruktoru ve stejné třídě, takže hodnoty mohou být různé pro různé provedení programu v závislosti na použitém konstruktoru. Klíčové slovo readonly specifikuje, že proměnná instance objektu není modifikovatelná a jakýkoli pokus o její úpravu po deklaraci má za následek chybu kompilace. Proměnná se nezmění až po provedení. Proměnné jsou prováděny pouze čtením, aby se kód zastavil od náhodného modifikace po jeho sestavení.

Rozdíl mezi konstantou a ReadOnly

  1. Základní

Konstantní (const) klíčové slovo je nic než neměnné proměnné, jejichž hodnota může být inicializována pouze v době kompilace. Tyto konstantní hodnoty jsou také nazývány jako literály. Jednoduše nám umožňuje určit, zda je proměnná modifikovatelná nebo nikoliv. Jednoduše řečeno, konstanty jsou implicitně statické a měly by být inicializovány předtím, než budou použity v programu. Na druhé straně klíčové slovo Readonly je modifikátor, který lze použít na polích a jehož hodnota může být změněna během běhu. Zabraňuje změnám polí, jejichž hodnoty lze nastavit pomocí referenčních proměnných.

  1. Inicializace

A const je ve výchozím nastavení statické a hodnoty, které by měly být přiřazeny v okamžiku deklarace proměnných, což znamená, že hodnoty jsou přiřazeny pouze při kompilaci. Konstanta je deklarována pomocí klíčového slova "const". Inicializace konstantního pole musí být konstantní výraz a nemusí být změněna. Jednoduše řečeno, konst je konstanta kompilace. Na druhou stranu čtecí pole může být inicializováno pouze na úrovni třídy, která není uvnitř metody, a po inicializaci pole nelze změnit. Jinými slovy lze v okamžiku deklarace nebo uvnitř konstruktora inicializovat přečtené proměnné.

  1. Přidělení paměti

Hodnota const je vložena přímo do kódu, protože slouží jako náhrada za kompilaci. Kompilátor umístí konstantní hodnotu do metadat sestavy, která definuje konstantu a vloží hodnotu do samotného kódu IL po inicializaci, takže pro konstanty při běhu pro přidělení není vyžadována žádná paměť. Hodnota pro čtení není konstantní a je uložena v hromadě načtené paměti, která nemůže být přidělena, dokud není načten typ. Pole readonly jsou uloženy v dynamické paměti, takže hodnoty je možné získat pouze za běhu.

  1. Binární verze

Ačkoli se obě klíčová slova používají téměř ke stejnému účelu, mají různou sémantiku binárních verzí. Pokud výraz odkazuje na konstantu, kompilátor vloží hodnotu v době kompilace. Pokud je tedy hodnota použita v jiné sestavě, musí být původní sestava aktualizována a hodnota by měla být změněna. Změny v sestavě se neodrážejí, dokud nejsou překompilovány. Hodnota se nedosáhne až do doby běhu, kdy výraz odkazuje na pole pro čtení. Pokud je hodnota změněna v jiné sestavě, změny se v sestavě odrážejí, jakmile se načtou, aniž by bylo nutné je znovu sestavit.

Const vs. Readonly: Srovnávací graf

Shrnutí konstu versus Readonly

Obě klíčová slova se používají pro stejnou věc, jako je prohlášení člena, takže hodnoty nemohou být v průběhu celého programu měněny. Klíčové slovo const se však výrazně liší od klíčového slova readonly. Konst je konstantní proměnná, jejíž hodnota by měla být inicializována v době kompilace, zatímco čtecí pole může být inicializováno pouze na úrovni třídy buď v okamžiku deklarace, nebo uvnitř konstruktoru. Konst je konstanta kompilace, zatímco čtecí pole jsou pouze pro čtení. Konstanta proměnných lze získat přístup pomocí "Classname.VariableName", zatímco readonly proměnné lze přistupovat pomocí "InstanceName.VariableName".Kromě toho mohou být proměnné konstanty deklarovány v metodách, zatímco čtecí pole nemohou být deklarovány v metodách.