Différence entre constante et lecture

Différence entre constante et lecture

Il est important de comprendre les concepts de la programmation C # avant de poursuivre la mise en œuvre du code. Avant de passer aux différences entre const et readonly, comprenons d'abord les mots clés et comment ils sont utilisés dans un programme. Les deux sont les mots clés les plus courants utilisés dans la programmation C # et fondamentalement dans le même but. Cependant, les deux mots clés sont très différents les uns des autres. Const est un mot réservé utilisé pour représenter des valeurs constantes et il spécifie qu'une valeur ne peut pas être modifiée après le temps de compilation, tandis que la lecture est un modificateur qui peut être utilisé sur les champs et dont la valeur peut être modifiée pendant l'exécution. Jetons un coup d'œil à certaines des principales différences entre const et readonly.

Qu'est-ce qu'un const?

Const se réfère à une variable constante et dont la valeur ne doit être attribuée qu'une seule fois, pendant la déclaration. Lorsque le mot clé const est utilisé lors d'une déclaration, il devient une signification constante, 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 le temps de compilation. Un const est implicitement statique par défaut, il peut donc être appelé avec le nom de la classe en utilisant «ClassName.Nom de variable". Les valeurs constantes sont également appelées littéraux. Il peut être de n'importe quel type de données de base tel qu'un constant constant, un const flottant ou un littéral de cordes.

Qu'est-ce que Readonly?

Le mot-clé ReadOnly est un modificateur qui ne peut être utilisé que sur les champs mais pas les variables locales. Un champ ReadOnly peut être initialisé soit au moment de la déclaration ou à l'intérieur d'un constructeur dans la même classe, de sorte que 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 toute tentative de le modifier après la déclaration entraîne une erreur de compilation. La variable ne devient non modifiable qu'après l'exécution. Les variables sont faites en lecture uniquement pour arrêter d'appeler le code de le modifier accidentellement après sa construction.

Différence entre constante et lecture

  1. Basique

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. Il nous permet simplement de spécifier si une variable est modifiable ou non. En termes simples, les constantes sont implicitement statiques et elles doivent être initialisées avant d'ê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 pendant l'exécution. Il empêche les champs d'être modifiés et dont les valeurs peuvent être définies par des variables de référence.

  1. Initialisation

Un const est statique par défaut et les valeurs dont les valeurs doivent être attribuées au moment de la déclaration variable, ce qui signifie que les valeurs sont attribuées uniquement au moment de la compilation. Une constante est déclarée en utilisant le mot-clé «const». L'initialisation d'un champ constant doit être une expression constante et ne peut pas être modifiée. Autrement dit, un const est une constante de temps de compilation. Un champ Readonly, en revanche, ne peut être initialisé qu'au niveau de la classe et non à 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 peuvent être initialisées au moment de la déclaration ou à l'intérieur d'un constructeur.

  1. Allocation de mémoire

Une valeur const est placée directement dans le code car elle agit comme le remplacement du temps de compilation.  Le compilateur place la valeur constante dans les métadonnées d'assemblage qui définit la constante et incorpore la valeur dans le code IL lui-même après l'initialisation, donc aucune mémoire n'est requise pour les constantes lors de l'exécution pour l'allocation. La valeur de lecture n'est pas constante et elle est stockée dans le tas de chargeur La mémoire pour laquelle ne peut être allouée tant que son type est chargé. Les champs ReadOnly sont stockés dans la mémoire dynamique afin que les valeurs ne puissent être obtenues qu'au moment de l'exécution.

  1. Version binaire

Bien que les deux mots clés soient utilisés presque dans le même but, ils ont une sémantique de version binaire différente. Lorsqu'une expression fait référence à une constante, le compilateur intègre la valeur à la compilation. Donc, 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 changements dans l'assemblage ne sont pas reflétés jusqu'à ce qu'il soit recompilé. La valeur n'est obtenue qu'à l'exécution lorsqu'une expression fait référence à un champ en lecture. Si la valeur est modifiée dans un assemblage différent, les modifications se reflètent dans l'assemblage dès qu'il est chargé sans avoir à le recompiler.

Const vs. Readonly: Tableau de comparaison

Résumé de const vs. Lecture seulement

Les deux mots clés sont utilisés pour la même chose que pour déclarer un membre afin que les valeurs ne puissent pas être des changements tout au long du programme. Cependant, le mot-clé const est très différent du mot-clé en lecture. Const est une variable constante dont la valeur doit être initialisée au moment de la compilation, tandis qu'un champ de lecture ne peut être initialisé qu'au niveau de la classe, soit au moment de la déclaration ou à l'intérieur du constructeur. Const est une constante de temps de compilation tandis que les champs en lecture sont en lecture seule. Les variables Constance sont accessibles en utilisant «ClassName.Variablename "tandis que les variables en lecture sont accessibles en utilisant" instancename.Nom de variable". De plus, les variables constant peuvent être déclarées dans les méthodes, tandis que les champs en lecture ne peuvent pas être déclarés dans les méthodes.