Spisu treści:
Definicja - Co oznacza Zmienny typ?
Zmienny typ, w C #, to typ obiektu, którego elementy danych, takie jak właściwości, dane i pola, można modyfikować po jego utworzeniu.
Typy zmienne są używane w aplikacjach równoległych, w których obiekty o zmiennej wartości są utrzymywane na stosie przez środowisko uruchomieniowe języka wspólnego (CLR). Zapewnia to pewną optymalizację, która sprawia, że jest on szybszy niż obiekty przydzielane na stercie. Aby zapobiec występowaniu błędów synchronizacji w aplikacjach równoległych z powodu wielu wątków uzyskujących dostęp do współużytkowanych danych, typy zmienne są używane z pewnego rodzaju mechanizmem blokującym.
Ze względu na swój nieodłączny charakter, dane typu zmiennego mogą być modyfikowane w czasie wykonywania, więc typ zmienny jest często używany, gdy obiekt zawiera dużą ilość danych zmiennych. Chociaż zmienny typ nie jest tak bezpieczny dla wątków i niezmienny jak typ niezmienny, jest częściej używany ze zmiennymi typu wartości, które są przydzielane w stosie, co poprawia wydajność.
Techopedia wyjaśnia Mutable Type
Wszystkie wbudowane typy wartości, takie jak int, double itp., Są zmiennymi typami i można je uniezależnić, dodając modyfikator „tylko do odczytu” przed zmiennymi. Jeśli zmienny typ odwołania jest określony z modyfikatorem tylko do odczytu, kompilator C # generuje ostrzeżenie. Dodając modyfikator tylko do odczytu typu pola referencyjnego, pola nie można zastąpić inną instancją typu referencyjnego, ale pozwoli on na modyfikację danych instancji pola poprzez typ referencyjny.
Na przykład StringBuilder jest zmiennym typem odwołania w bibliotece frameworku .NET, dzięki któremu wartość ciągu instancji utworzonej z tego typu można modyfikować poprzez dołączanie, usuwanie, zastępowanie lub wstawianie znaków.
Typu zmiennego nie należy wyprowadzać z typu niezmiennego, ponieważ istnieje możliwość, że metoda wirtualna w klasie pochodnej zastąpi go w taki sposób, że elementy niezmienne zostaną nadpisane.
Głównym ograniczeniem typu zmiennego jest to, że przekazując obiekt typu zmiennego (np. Struct) poprzez przypisanie zmiennej lokalnej lub jako parametr do metody, przekazywana jest wartość obiektu, a nie sam obiekt. W ten sposób kopia obiektu jest mutowana, a nie oryginał. Takie zachowanie może prowadzić do nieoczekiwanych błędów.




