Vous êtes sur la page 1sur 4

MK

Accueil > Cours > Apprenez à développer en C# > Les blocs de code et la portée d’une variable

Apprenez à développer en C#

20 heures  Facile

Mis à jour le 04/06/2020

 

Les blocs de code et la portée d’une variable


Nous avons régulièrement utilisé dans le chapitre précédent les accolades ouvrantes et fermantes : {
et }. Nous avons rapidement dit que ces accolades servaient à créer des blocs de code.

L'utilisation d'accolades implique également une autre subtilité. Vous l'avez vu dans le titre du
chapitre, il s'agit de la portée d'une variable.

Regardons à présent comment cela fonctionne.

Les blocs de code


Les blocs de code permettent de grouper plusieurs instructions qui vont s’exécuter dans le même
contexte.
Cela peut être le cas par exemple après un if , nous pourrions souhaiter effectuer plusieurs
instructions. Par exemple :
csharp

1 decimal compteEnBanque = 300;


2 if (compteEnBanque >= 0)
3 {
4 Console.WriteLine("Votre compte est créditeur");
5 Console.WriteLine("Voici comment ouvrir un livret …");
6 }
7 else
8 {
9 Console.WriteLine("Votre compte est débiteur");
10 Console.WriteLine("N’oubliez pas que les frais de découverts sont de …");
11 }
Ici, nous enchaînons deux Console.WriteLine en fonction du résultat de la comparaison de

compteEnBanque avec 0.

Les blocs de code seront utiles dès qu’on voudra regrouper plusieurs instructions. C’est le cas pour
les instructions conditionnelles mais nous verrons beaucoup d’autres utilisations, comme le
switch que nous avons vu juste au-dessus, les boucles ou les méthodes que nous allons aborder
dans le chapitre suivant.

La portée d’une variable


C# … portée … on se croirait au cours de musique …

En fait, la « portée d’une variable » est la zone de code dans laquelle une variable est utilisable. Elle
correspond en général au bloc de code dans lequel est dé nie la variable.

Ainsi, le code suivant :


csharp

1 static void Main(string[] args)


2 {
3 string prenom = "Nicolas";
4 string civilite = "M.";
5 if (prenom == "Nicolas")
6 {
7 int age = 30;
8 Console.WriteLine("Votre age est : " + age);
9 switch (civilite)
10 {
11 case "M.":
12 Console.WriteLine("Vous êtes un homme de " + age + " ans");
13 break;
14 case "Mme":
15 Console.WriteLine("Vous êtes une femme de " + age + " ans");
16 break;
17 }
18 }
19 if (age >= 18)
20 {
21 Console.WriteLine(prenom + ", vous êtes majeur");
22 }
23 }

est incorrect et provoquera une erreur de compilation. En effet, nous essayons d’accéder à la
variable « age » en dehors du bloc de code où elle est dé nie. Nous voyons que cette variable est
dé nie dans le bloc qui est exécuté lorsque le test d’égalité du prénom avec la chaine « Nicolas » est
vrai alors que nous essayons de la comparer à 18 dans un endroit où elle n’existe plus.

Nous pouvons utiliser « age » sans aucun problème dans tout le premier if , et même dans les
sous blocs de code, comme c’est le cas dans le sous bloc du switch , mais pas en dehors du bloc
de code dans lequel la variable est dé nie. Ainsi, la variable « prenom » est accessible dans le dernier
if car elle a été dé nie dans un bloc père.
Vous noterez qu’ici, la complétion nous est utile. En effet, Visual Studio Express propose de nous
compléter le nom de la variable dans un bloc où elle est accessible. Dans un bloc où elle ne l’est pas,
la complétion automatique ne nous la propose pas.
Comme Visual Studio Express est malin comme une machine, si la complétion ne propose pas ce
que vous souhaitez, c’est probablement que vous n’y avez pas le droit. Une des explications peut
être que la portée ne vous l’autorise pas.

Pour corriger l’exemple précédent, il faut déclarer la variable « age » au même niveau que la variable
prénom.

Ok, mais alors, pourquoi on ne déclarerait pas tout au début une bonne fois pour toute ?
Cela éviterait ces erreurs … non ?

Evidemment non, vous verrez qu’il n’est pas possible de faire cela. Généralement, l’utilisation de
variables accessibles de partout est une mauvaise pratique de développement (c’est ce qu’on
appelle des variables « globales »). Même si on peut avoir un équivalent en C#, il faut se rappeler que
plus une variable est utilisée dans la plus petite portée possible, mieux elle sera utilisée et plus elle
sera pertinente.
Je vous conseille donc d’essayer de déterminer le bloc de code minimal où l’utilisation de la variable
est adaptée.

En résumé

Un bloc de code permet de regrouper des instructions qui commencent par { et qui nissent
par }.
Une variable dé nie à l'intérieur d'un bloc de code aura pour portée ce bloc de code.

J'AI TERMINÉ CE CHAPITRE ET JE PASSE AU SUIVANT

 LES INSTRUCTIONS CONDITIONNELLES QUIZ : QUIZ 1 

Le professeur
Nicolas Hilaire
Expert .NET, artisan logiciel, plusieurs fois honoré du titre Microsoft MVP, mais également
curieux des autres technologies.

Découvrez aussi ce cours en...


 
Livre PDF

OPENCLASSROOMS

ENTREPRISES

CONTACT

EN PLUS

Français