Il est important de comprendre les concepts de la programmation C # avant de procéder à l'implémentation du code. Avant de passer aux différences entre const et readonly, commençons par comprendre les mots-clés et leur utilisation dans un programme. Les deux sont les mots-clés les plus couramment utilisés dans la programmation C # et visent essentiellement le même but. Cependant, les deux mots-clés sont très différents l'un de l'autre. Const est un mot réservé utilisé pour représenter les valeurs constantes et spécifie qu'une valeur ne peut pas être modifiée après la compilation, alors que readonly est un modificateur pouvant être utilisé sur des champs et dont la valeur peut être modifiée au cours de l'exécution. Examinons quelques-unes des principales différences entre const et readonly.
Const fait référence à une variable constante dont la valeur ne doit être affectée qu'une seule fois, lors de la déclaration. Lorsque le mot clé const est utilisé lors d'une déclaration, il devient une constante, ce qui signifie que la valeur reste constante et ne peut pas être modifiée tout au long du programme. C'est plus un mot réservé qui spécifie qu'une valeur ne doit pas être modifiée après la compilation. Un const est implicitement statique par défaut et peut donc être appelé avec le nom de la classe à l'aide de «Classname.VariableName». Les valeurs constantes sont également appelées littéraux. Il peut s'agir de n'importe quel type de données de base tel qu'un entier, un flottant ou un littéral..
Le mot clé Readonly est un modificateur qui ne peut être utilisé que sur des champs mais pas sur des variables locales. Un champ en lecture seule peut être initialisé au moment de la déclaration ou à l'intérieur d'un constructeur de la même classe. Par conséquent, les valeurs peuvent être différentes pour différentes exécutions du programme en fonction du constructeur utilisé. Le mot clé readonly spécifie qu'une variable d'instance d'un objet n'est pas modifiable et que toute tentative de la modifier après la déclaration entraîne une erreur de compilation. La variable ne devient pas modifiable avant l'exécution. Les variables sont faites en lecture seule uniquement pour que le code ne soit pas modifié par inadvertance après sa construction..
Le mot clé Constant (const) n'est rien d'autre que des variables immuables dont la valeur ne peut être initialisée qu'au moment de la compilation. Ces valeurs constantes sont également appelées littéraux. Cela nous permet simplement de spécifier si une variable est modifiable ou non. En termes simples, les constantes sont implicitement statiques et doivent être initialisées avant de pouvoir être utilisées dans le programme. Le mot clé Readonly, en revanche, est un modificateur qui peut être utilisé sur les champs et dont la valeur peut être modifiée au cours de l'exécution. Il empêche les champs d'être modifiés et dont les valeurs peuvent être définies à l'aide de variables de référence.
Un const est statique par défaut et les valeurs pour lesquelles doivent être attribuées au moment de la déclaration de la variable, ce qui signifie que les valeurs ne sont attribuées qu'au moment de la compilation. Une constante est déclarée à l'aide du mot clé «const». L'initialisation d'un champ constant doit être une expression constante et ne peut pas être modifiée. En termes simples, un const est une constante de compilation. Par contre, un champ en lecture seule ne peut être initialisé qu'au niveau de la classe, pas à l'intérieur de la méthode, et le champ ne peut pas être modifié après l'initialisation. En d'autres termes, les variables en lecture seule peuvent être initialisées au moment de la déclaration ou à l'intérieur d'un constructeur.
Une valeur const est insérée directement dans le code car elle agit en tant que remplacement à la compilation. Le compilateur place la valeur constante dans les métadonnées d'assembly qui définissent la constante et incorpore la valeur dans le code IL même après l'initialisation. Aucune mémoire n'est donc requise pour les constantes au moment de l'exécution afin de les allouer. La valeur en lecture seule n'est pas constante et est stockée dans le tas du chargeur dont la mémoire ne peut pas être allouée tant que son type n'est pas chargé. Les champs en lecture seule sont stockés dans la mémoire dynamique, de sorte que les valeurs ne peuvent être obtenues qu'au moment de l'exécution..
Bien que les deux mots-clés soient utilisés presque dans le même but, ils ont une sémantique de versioning binaire différente. Lorsqu'une expression fait référence à une constante, le compilateur incorpore la valeur au moment de la compilation. Ainsi, si la valeur est utilisée dans un assemblage différent, l'assemblage d'origine doit être mis à jour et la valeur doit être modifiée. Les modifications apportées à l'assembly ne sont pas répercutées jusqu'à ce qu'il soit recompilé. La valeur n'est obtenue qu'au moment de l'exécution, lorsqu'une expression fait référence à un champ en lecture seule. Si la valeur est modifiée dans un assemblage différent, les modifications sont reflétées dans l'assembly dès qu'il est chargé sans qu'il soit nécessaire de le recompiler..
Les deux mots-clés sont utilisés pour la même chose qui consiste à déclarer un membre afin que les valeurs ne puissent pas être modifiées tout au long du programme. Cependant, le mot clé const est très différent du mot clé readonly. Const est une variable constante dont la valeur doit être initialisée au moment de la compilation, alors qu'un champ en lecture seule ne peut être initialisé qu'au niveau de la classe, au moment de la déclaration ou à l'intérieur du constructeur. Const est une constante de compilation alors que les champs en lecture seule sont en lecture seule. Les variables de constance sont accessibles via «Classname.VariableName», tandis que les variables en lecture seule sont accessibles via «InstanceName.VariableName». De plus, les variables const peuvent être déclarées dans les méthodes, alors que les champs en lecture seule ne peuvent pas être déclarés dans les méthodes.