Sadržaj:
Definicija - Što znači tip mutable?
Promjenljivi tip, u C #, je vrsta objekta čiji se članovi, kao što su svojstva, podaci i polja, mogu mijenjati nakon stvaranja.
Promjenljivi tipovi rabe se u paralelnim aplikacijama, gdje se objekti tipa izmjenjive vrijednosti održavaju u snopu pomoću Common Language Runtime (CLR). To omogućuje određenu optimizaciju, što ga čini bržim od objekata koji su dodijeljeni u hrpi. Kako se spriječi pojava pogrešaka u sinkronizaciji u paralelnim aplikacijama zbog više niti koje pristupaju zajedničkim podacima, koriste se zamjenjivi tipovi s nekim mehanizmom zaključavanja.
Zbog svoje inherentne prirode, podaci o izmjenjivim tipovima mogu se mijenjati tijekom vremena izvođenja, pa se zamjenjivi tip često koristi kada objekt sadrži veliku količinu promjenjivih podataka. Iako tip koji se može mijenjati nije toliko siguran i siguran kao nepromjenjiv tip, češće se koristi sa varijablama vrijednosnog tipa, koje se raspoređuju u snopu, poboljšavajući performanse.
Tehopedia objašnjava promjenjivu vrstu
Sve ugrađene vrste vrijednosti poput int, double, itd. Su promjenjive vrste i mogu se učiniti nepromjenjivim dodavanjem modifikatora "samo za čitanje" prije varijabli. Ako je specificirana izmjenjiva vrsta s modifikatorom koji se čita, C # prevoditelj generira upozorenje. Dodavanjem modifikovanog modifikatora u polje referentnog tipa, polje se ne može zamijeniti s drugom instancom referentnog tipa, ali će omogućiti da se podaci instancije polja izmjene putem referentne vrste.
Na primjer, StringBuilder je promjenjivi referentni tip u .NET okvirnoj biblioteci, kroz koji se vrijednost niza instancije stvorene izvan ove vrste može mijenjati dodavanjem, uklanjanjem, zamjenom ili umetanjem znakova.
Promjenjivi tip ne bi trebao biti izveden iz nepromjenjivog tipa jer postoji mogućnost da virtualna metoda u izvedenom razredu prevlada tako da se nepromjenjivi članovi prepisuju.
Glavno ograničenje mutabilnog tipa je da dok prolazi objekt mutabilnog tipa (poput strukture) dodjeljivanjem lokalne varijable ili kao parametar metodi, vrijednost objekta se prenosi, a ne sam objekt. Ovim se kopira objekta mutira i nije izvornik. Takvo ponašanje može dovesti do neočekivanih pogrešaka.