J'ai fait l'exercice suivant :
J'ai l'erreur suivante au niveau de la déclaration de la variable resultat dansl e case "moyenne" : Erreur 1 Une variable locale nommée 'resultat' ne peut pas être déclarée dans cette portée, car elle modifierait la signification de 'resultat', déjà utilisée dans une portée 'enfant' pour désigner autre chose.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 static void Main(string[] args) { string[] parameters; string sTypeDeCalcul; if (args.Length == 0) Console.Write("passez un paramètre"); else { parameters = Environment.GetCommandLineArgs(); sTypeDeCalcul = parameters[1]; switch (sTypeDeCalcul) { case "somme": if (parameters.Length != 4) Console.WriteLine("vous ne pouvez faire la somme que de deux nombres \n"); else { int value1 = int.Parse(parameters[2]); int value2 = int.Parse(parameters[3]); int resultat = value1 + value2; Console.WriteLine("La somme de " + value1 + " et de " + value2 + " est : " + resultat ); }break; case "multiplication": if (parameters.Length != 4) Console.WriteLine("vous ne pouvez faire la somme que de deux nombres"); else { int value1 = int.Parse(parameters[2]); int value2 = int.Parse(parameters[3]); int resultat = value1 * value2; Console.WriteLine ("le Résultat de la multiplication de " + value1 + " et de " + value2 + " est " + resultat ); }break; case "moyenne": List<int> values= new List<int>(); int resultat = 0; for (int i = 2; i < parameters.Length ; i++) { values.Add (int.Parse(parameters[i])); } foreach (int value in values) { resultat += value; } resultat /= values.Count ; break; default: Console.WriteLine("Veuillez utiliser les variable somme, multiplication ou moyenne"); break; } } }
Je sais qu'en simplement renommant ma variable resultatsomme je n'aurai plus le problème.
Mais j'aimerais connaitre la raison de cette erreur.
Je comprend bien que la définition des variables résultats précédent sont dans dans des sous condition if de la condition case.
Mais étant donné que chaque case reçoit un break, il n'y a aucune possibilité que la variable résultat soit utilisée plusieurs fois.
De plus vu la portée des variable, celle-ci est "clean" à chaque break de chaque case non ?
Merci pour vos explications.
Partager