Table des matières:
Définition - Que signifie le type immuable?
Un type immuable, dans le contexte de C #, est un type d'objet dont les données ne peuvent pas être modifiées après sa création. Un type immuable définit la propriété ou l'état de l'objet en lecture seule car il ne peut pas être modifié après son affectation lors de l'initialisation.
Les types immuables sont conçus pour une gestion efficace de la mémoire et une meilleure vitesse, ce qui les rend adaptés aux objets nécessitant une synchronisation. L'immutabilité offre une meilleure lisibilité du code en modifiant la visibilité de l'état du programme et en isolant les opérations qui changent d'état de celles qui ne le sont pas. Les types immuables offrent une sécurité plus élevée que les types mutables.
Un type immuable est utilisé lorsque les données doivent persister après avoir été attribuées une fois, mais sans aucune exigence de modification des données à l'avenir. Étant donné que les objets immuables ne changent pas leur état, ils sont plus utiles dans les scénarios multithread et multiprocessus, car plusieurs threads peuvent lire ou écrire un objet, ce qui peut provoquer des conditions de course et des problèmes de synchronisation.
Techopedia explique le type immuable
Les objets de type immuable peuvent être créés à l'aide des mots clés "const" et "readonly". Bien que la lecture seule permette la modification d'un champ dans le constructeur, const ne le permet pas. Les nombres, les chaînes et null ne peuvent être utilisés que comme champs const, qui sont vraiment immuables. La lecture seule n'est pas vraiment immuable car elle ne permet d'écrire qu'une seule fois. Ainsi, ce n'est pas une constante de temps de compilation comme le champ const. Les objets véritablement immuables ne changent jamais du tout leur état interne et sont donc intrinsèquement thread-safe.
La classe System.String est un type de référence immuable fourni dans la bibliothèque de classes du framework .NET. Cette classe crée un nouvel objet chaîne en interne pour toute action de manipulation de chaîne. Le contenu des objets de ce type ne change pas, bien que la syntaxe donne l'impression que le contenu peut être modifié. De plus, la chaîne est utilisée comme clé de table de hachage pour le calcul des valeurs de hachage afin d'éviter le risque de corrompre la structure des données de hachage.
Le principal inconvénient des types immuables est qu'ils nécessitent plus de ressources que les autres types d'objets.