Obsah:
Definícia - Čo znamená typ Meable?
Premenlivý typ v C # je typ objektu, ktorého dátové členy, ako sú vlastnosti, údaje a polia, sa po vytvorení môžu zmeniť.
Premeniteľné typy sa používajú v paralelných aplikáciách, kde objekty typu premennej hodnoty sú v zásobníku udržiavané pomocou modulu Common Language Runtime (CLR). Toto poskytuje určitú optimalizáciu, vďaka čomu je rýchlejšia ako haldy alokované objekty. Aby sa zabránilo výskytu synchronizačných chýb v paralelných aplikáciách kvôli viacerým vláknam, ktoré majú prístup k zdieľaným údajom, používajú sa s istým druhom blokovacieho mechanizmu mutabilné typy.
Kvôli svojej prirodzenej povahe sa môžu údaje o premenlivom type počas doby premeny modifikovať, takže premenlivý typ sa často používa, keď objekt obsahuje veľké množstvo vymeniteľných údajov. Hoci mutabilný typ nie je tak bezpečný ako vlákno a bezpečný ako nemenný typ, častejšie sa používa s premennými typu hodnoty, ktoré sa v zásobníku prideľujú, čím sa zvyšuje výkon.
Techopedia vysvetľuje typ Miable
Všetky vstavané typy hodnôt, ako sú int, double, atď., Sú premenlivé typy a dajú sa zmeniť na nemenné pridaním modifikátora „readonly“ pred premenné. Ak je typ čitateľného odkazu špecifikovaný pomocou modifikátora na čítanie, kompilátor C # vygeneruje varovanie. Pridaním readonly modifikátora do poľa referenčného typu sa pole nemôže nahradiť inou inštanciou referenčného typu, ale umožní modifikáciu dát inštancie poľa prostredníctvom referenčného typu.
Napríklad StringBuilder je mutabilný referenčný typ v knižnici .NET framework, prostredníctvom ktorého sa dá zmeniť hodnota reťazca inštancie vytvorenej z tohto typu pridaním, odstránením, nahradením alebo vložením znakov.
Mutabilný typ by nemal byť odvodený z nemeniteľného typu, pretože existuje možnosť, že virtuálna metóda v odvodenej triede ho prepíše tak, aby boli nemenovaní členovia prepísaní.
Hlavným obmedzením premenlivého typu je to, že pri odovzdávaní objektu premeniteľného typu (ako je štruktúra) prostredníctvom priradenia lokálnej premennej alebo ako parametra k metóde sa prevedie hodnota objektu, a nie samotný objekt. Týmto sa kópia objektu zmutuje a nie originál. Toto správanie môže viesť k neočakávaným chybám.