Indholdsfortegnelse:
Definition - Hvad betyder Mutable Type?
Muterbar type, i C #, er en type objekt, hvis datamedlemmer, såsom egenskaber, data og felter, kan ændres efter dens oprettelse.
Mutable typer bruges i parallelle applikationer, hvor objekterne af den mutable værditype opretholdes i stakken af Common Language Runtime (CLR). Dette giver en vis optimering, som gør det hurtigere end heap-allokerede objekter. For at forhindre, at synkroniseringsfejl forekommer i parallelle applikationer på grund af flere tråde, der får adgang til de delte data, bruges mutable typer med en slags låsemekanisme.
På grund af dets iboende karakter kan data, der kan ændres, ændres i løbet af køretid, så man bruger ofte en mutabel type, når objektet indeholder en stor mængde data, der kan skiftes. Selvom mutérbar type ikke er så tråd-sikker og sikker som uforanderlig type, bruges den oftere med variabler af værditype, som bliver allokeret i stakken, hvilket forbedrer ydeevnen.
Techopedia forklarer Mutable Type
Alle indbyggede værdityper som int, dobbelt osv. Er mutable typer og kan gøres uforanderlige ved at tilføje modifikatoren "readonly" før variablerne. Hvis en mutabel referencetype er specificeret med en readonly modifier, genererer C # -kompilatoren en advarsel. Ved at tilføje en readonly modifier til et felt af referencetype kan feltet ikke erstattes med en anden forekomst af referencetypen, men vil tillade, at forekomstdataene i feltet kan ændres gennem referencetypen.
For eksempel er StringBuilder en mutérbar referencetype i .NET-rammebiblioteket, hvorigennem strengværdien af en instans oprettet af denne type kan ændres ved at tilføje, fjerne, udskifte eller indsætte tegn.
En mutérbar type bør ikke være afledt af en uforanderlig type, fordi der er en mulighed for en virtuel metode i den afledte klasse til at tilsidesætte den, så de uforanderlige medlemmer overskrives.
Hovedbegrænsningen af en mutabel type er, at mens et objekt af en mutabel type (som struktur) overføres gennem tildeling af en lokal variabel eller som en parameter til en metode, overføres objektets værdi og ikke selve objektet. Dermed muteres kopien af objektet og ikke originalen. Denne opførsel kan føre til uventede fejl.
