Programmation C sharp/Les variables et les constantes
Les variables
[modifier | modifier le wikicode]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
[modifier | modifier le wikicode]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 :
type nom [ = expression ] ;
Exemples :
double prix_unitaire;
int quantite = 50;
string article = "Pommes";
bool rabais = false;
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
) estfalse
, - 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 :
int quantite = 50, nombre, quantite_en_stock = 100 ;
Ou en plaçant une variable par ligne pour plus de clarté :
int quantite = 50,
nombre,
quantite_en_stock = 100 ;
Utilisation
[modifier | modifier le wikicode]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 :
prix_unitaire = 1.50;
if (rabais) prix_unitaire = prix_unitaire - 0.20;
double prix_total = prix_unitaire * quantite ;
Portée d'une variable
[modifier | modifier le wikicode]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 :
public class Exemple
{
// variable membre de la classe :
int nombre = 5; // portée : la classe Exemple
public int MethodeUne()
{
// variable locale à la méthode :
int nombre = 10; // portée : la méthode MethodeUne()
return nombre + // la variable locale
this.nombre; // la variable membre
// retourne 10 + 5 , c'est à dire 15
}
public int MethodeDeux()
{
System.Console.WriteLine("Nombre = " + nombre); // la variable membre
// Nombre = 5
{
int nombre = 20; // variable locale au bloc d'accolades
System.Console.WriteLine("Nombre = " + nombre); // la variable locale
// Nombre = 20
} // la variable locale est hors de portée
System.Console.WriteLine("Nombre = " + nombre); // la variable membre
// Nombre = 5
}
}
Durée de vie d'une variable
[modifier | modifier le wikicode]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
[modifier | modifier le wikicode]Une variable peut être déclarée en lecture seule en utilisant le mot-clé readonly
.
Exemple :
readonly double taux_tva = 19.6;
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 :
class Facture
{
public readonly double taux_tva;
public Facture(bool taux1)
{
if (taux1) taux_tva = 19.6;
else taux_tva = 5.5;
}
}
Les constantes
[modifier | modifier le wikicode]Une constante nommée est associée à une valeur pour toute la durée de l'application. Sa valeur ne peut changer.
Déclaration
[modifier | modifier le wikicode]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 :
const type nom = expression ;
Exemple :
const double prix_unitaire_unique = 1.50 ;
const double taux_euro_en_francs = 6.55957 ;
Comme les variables il est également possible de regrouper la déclaration de plusieurs constantes du même type :
const double
prix_unitaire_unique = 1.50 ,
taux_euro_en_francs = 6.55957 ;
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
[modifier | modifier le wikicode]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
[modifier | modifier le wikicode]Les mêmes règles que celles pour les variables s'appliquent également aux constantes.