Table des matières:
Définition - Que signifie le type Mutable?
Le type mutable, en C #, est un type d'objet dont les membres de données, tels que les propriétés, les données et les champs, peuvent être modifiés après sa création.
Les types mutables sont utilisés dans des applications parallèles, où les objets de type valeur mutable sont conservés dans la pile par le Common Language Runtime (CLR). Cela fournit une certaine optimisation, ce qui le rend plus rapide que les objets alloués en tas. Pour éviter que des erreurs de synchronisation ne se produisent dans les applications parallèles en raison de plusieurs threads accédant aux données partagées, les types mutables sont utilisés avec une sorte de mécanisme de verrouillage.
En raison de leur nature inhérente, les données de type mutable peuvent être modifiées pendant l'exécution, donc le type mutable est souvent utilisé lorsque l'objet contient une grande quantité de données modifiables. Bien que le type mutable ne soit pas aussi sûr pour les threads et sécurisé que le type immuable, il est plus souvent utilisé avec des variables de type valeur, qui sont allouées dans la pile, améliorant les performances.
Techopedia explique le type Mutable
Tous les types de valeurs intégrés comme int, double, etc., sont des types mutables et peuvent être rendus immuables en ajoutant le modificateur "en lecture seule" avant les variables. Si un type de référence mutable est spécifié avec un modificateur en lecture seule, le compilateur C # génère un avertissement. En ajoutant un modificateur en lecture seule à un champ de type référence, le champ ne peut pas être remplacé par une autre instance du type référence, mais permettra aux données d'instance du champ d'être modifiées via le type référence.
Par exemple, StringBuilder est un type de référence mutable dans la bibliothèque du framework .NET, à travers lequel la valeur de chaîne d'une instance créée à partir de ce type peut être modifiée en ajoutant, supprimant, remplaçant ou insérant des caractères.
Un type mutable ne doit pas être dérivé d'un type immuable car il existe une possibilité qu'une méthode virtuelle dans la classe dérivée la remplace de telle sorte que les membres immuables soient remplacés.
La principale limitation du type mutable est qu'en passant un objet de type mutable (comme struct) par l'affectation d'une variable locale ou comme paramètre à une méthode, la valeur de l'objet est transférée et non l'objet lui-même. Par cela, la copie de l'objet est mutée et non l'original. Ce comportement peut entraîner des bogues inattendus.