Obsah:
Definícia - Čo znamená nemenný typ?
Nezmeniteľný typ v kontexte C # je typom objektu, ktorého údaje nemožno po jeho vytvorení zmeniť. Nemeniteľný typ nastaví vlastnosť alebo stav objektu na čítanie len preto, že ho nemožno zmeniť po priradení počas inicializácie.
Nemenné typy sú navrhnuté pre efektívnu správu pamäte a vyššiu rýchlosť, vďaka čomu sú vhodné pre objekty s požiadavkami na synchronizáciu. Nemeniteľnosť poskytuje lepšiu čitateľnosť kódu vykonaním zmien vo viditeľnosti stavu programu a izoláciou operácií, ktoré menia stav od tých, ktoré sa tak nestanú. Nemožné typy poskytujú vyššiu bezpečnosť ako meniteľné typy.
Nemeniteľný typ sa používa tam, kde majú údaje pretrvávať aj po jednom priradení, avšak bez potreby, aby sa údaje v budúcnosti menili. Pretože nemenné objekty nemenia svoj stav, sú užitočnejšie v scenároch s viacerými vláknami a vo viacerých procesoch, pretože viac vlákien môže čítať alebo zapisovať objekt, čo môže spôsobiť problémy s pretekaním a synchronizáciu.
Techopedia vysvetľuje nemenný typ
Objekty nemenného typu je možné vytvárať pomocou kľúčových slov „const“ a „readonly“. Aj keď len na čítanie umožňuje modifikáciu poľa v konštruktore, konštancia nie. Čísla, reťazce a nuly môžu byť použité iba ako konštantné polia, ktoré sú skutočne nemenné. Čítanie nie je skutočne nemenné, pretože umožňuje písať iba raz. Nie je to teda konštanta kompilácie ako konštantné pole. Skutočne nemenné objekty nikdy nezmenia vôbec svoj vnútorný stav, a preto sú vo svojej podstate bezpečné pre vlákna.
Trieda System.String je nemenný referenčný typ poskytovaný v knižnici tried .NET Framework. Táto trieda vytvorí interne nový reťazcový objekt pre každú akciu manipulácie s reťazcami. Obsah objektov tohto typu sa nemení, hoci jeho syntax vyzerá, akoby sa obsah mohol zmeniť. Reťazec sa okrem toho používa ako kľúč tabuľky hash na výpočet hodnôt hash, aby sa predišlo riziku poškodenia štruktúry hash údajov.
Hlavnou nevýhodou nemenných typov je to, že vyžadujú viac zdrojov ako iné typy objektov.