Problèmes de portée variable C# dans les boucles imbriquées
Comprendre la portée des variables en C# est crucial pour éviter les erreurs courantes. La portée d'une variable dicte l'endroit où elle est accessible dans votre code. Examinons deux exemples de code mettant en évidence des problèmes de portée potentiels :
Exemple 1 :
<code class="language-csharp">public void MyMethod(){ int i=10; for(int x=10; x<20; x++){ int i = x; // Point 1: Error Console.WriteLine(i); } Console.WriteLine(i); // Point 2: Error }</code>
Exemple 2 :
<code class="language-csharp">public void MyMethod(){ for(int x=10; x<20; x++){ int i = x; object objX = new object(); Console.WriteLine(i); } for(int y=20; y<30; y++){ int i = y; object objX = new object(); Console.WriteLine(i); } }</code>
Analyse des erreurs
Dans l'exemple 1, le compilateur marque le point 1 car la boucle interne redéclare i
, créant une nouvelle variable avec le même nom dans la même portée. Cela viole la règle des noms de variables uniques dans une portée donnée. L'erreur au point 2 provient de la tentative d'accès à i
en dehors de la boucle où un autre i
a été déclaré dans la portée de la boucle.
Résolution
L'exemple 2 se compile avec succès. Les deux boucles établissent des portées distinctes. Les variables i
et objX
de chaque boucle sont traitées comme des entités distinctes, évitant ainsi les conflits de noms. Chaque boucle agit comme si elle était entourée d'accolades invisibles, créant sa propre portée locale.
Clé à retenir
Les règles de portée variable de C# imposent des noms uniques dans une portée donnée et une référence cohérente à la même entité dans toute cette portée. Comprendre cela, en particulier dans les boucles imbriquées, évite les erreurs de portée illustrées dans l'exemple 1. En gérant soigneusement les déclarations de variables et les portées, les développeurs peuvent écrire du code C# plus propre et sans erreur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!