# Programmation C sharp/Les variables et les constantes
## Les variables

Une variable réserve une place en mémoire pour stocker des données : résultats d'expressions, données lues depuis un fichier, ... Elle est associée à un nom.

### Déclaration

Une variable possède un nom et un type. Ce type détermine ce que peut stocker la variable : un nombre, une chaîne de caractère, un objet d'une classe particulière...
La syntaxe est la suivante :
Exemples :
Assigner une variable (initialiser) à la déclaration n'est pas obligatoire. Dans ce cas, elle possède la valeur par défaut correspondant au type :
* la valeur par défaut des types numériques et caractères (char) est zéro (0),
* la valeur par défaut du type booléen (bool) est false,
* la valeur par défaut des types références (objet, chaîne de caractère, tableaux) est null,
* la valeur par défaut des types énumérés (enum) est celle qui correspond au type sous-jacent (int par défaut).
Il est possible de regrouper la déclaration de plusieurs variables du même type en utilisant une virgule pour séparer les différentes variables.
Exemple :
Ou en plaçant une variable par ligne pour plus de clarté :

### Utilisation

Une variable est utilisée pour stocker des résultats intermédiaires, des données qui serviront ultérieurement. La valeur d'une variable peut être modifiée autant de fois que nécessaire.
Exemple :

### Portée d'une variable

La portée d'une variable est l'ensemble des emplacements dans le code où cette variable est accessible. En dehors de cette portée, l'utilisation du même nom correspondra à une autre variable ou plus souvent à aucune variable (erreur de compilation dans ce cas).
La portée d'une variable correspond au bloc d'accolades où elle est déclarée. Une variable membre d'une classe est déclarée au niveau de la classe et est accessible depuis les autres membres de la classe (méthodes, indexeurs, propriétés, ...). Une variable locale est déclarée à l'intérieur d'un bloc d'accolades (celui de la méthode/propriété membre, ou un bloc interne à celle-ci).
Exemple :

### Durée de vie d'une variable

La durée de vie d'une variable est la période durant laquelle une variable existe, c'est à dire conserve son emplacement en mémoire et durant laquelle elle peut donc stocker des données.
Pour une variable locale d'une méthode, la durée de vie correspond à celle de l'exécution du bloc de code : elle est allouée au début du bloc de déclaration sur la pile, et libérée de la pile après exécution du bloc.
Pour une variable membre d'une classe, la durée de vie correspond à celle de l'objet (l'instance de la classe) : elle est allouée à la construction d'un objet et libérée lors de la libération de l'objet.

### Variable en lecture seule

Une variable peut être déclarée en lecture seule en utilisant le mot-clé readonly.
Exemple :
Il n'est pas obligatoire d'initialiser une variable en lecture seule lors de sa déclaration. Ce qui permet de déterminer la valeur en fonction d'autres données, ou de lire sa valeur depuis un fichier par exemple, et d'empêcher sa modification après affectation.
Exemple :

## Les constantes

Une constante nommée est associée à une valeur pour toute la durée de l'application. Sa valeur ne peut changer.

### Déclaration

La syntaxe est similaire à celle de la déclaration d'une variable, excepté que le mot clé const précède la déclaration, et que l'initialisation à la déclaration est obligatoire :
Exemple :
Comme les variables il est également possible de regrouper la déclaration de plusieurs constantes du même type :
N.B. : Une constante est implicitement statique. Il est donc inutile d'ajouter le mot-clé static, sinon le compilateur génère une erreur.

### Types des constantes

Le mot const ne s'applique qu'aux types standards numériques, booléens, string, et énumérations.

### Portée et durée de vie d'une constante

Les mêmes règles que celles pour les variables s'appliquent également aux constantes.