Type immuable

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 avoir été affecté 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 avec des exigences de synchronisation. L'immuabilité offre une meilleure lisibilité du code en apportant des modifications à la visibilité de l'état du programme et en isolant les opérations qui changent d'état de celles qui ne le font 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é affectées une fois, mais sans aucune exigence pour que les données soient modifiées à l'avenir. Étant donné que les objets immuables ne modifient 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.

Definir Tech explique le type immuable

Des objets de type immuable peuvent être créés à l'aide des mots-clés "const" et "readonly". Alors que la lecture seule autorise 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. Readonly n'est pas vraiment immuable car il ne permet d'écrire qu'une seule fois. Ainsi, ce n'est pas une constante 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 .NET Framework. 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, string est utilisé 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.

Cette définition a été écrite dans le contexte de C #