Maison >développement back-end >C++ >Comment la portée variable affecte-t-elle la compilation en C# ?

Comment la portée variable affecte-t-elle la compilation en C# ?

DDD
DDDoriginal
2025-01-12 14:09:44575parcourir

How Does Variable Scope Affect Compilation in C#?

Ambiguïté de la portée des variables en C#

La portée variable en C# peut prêter à confusion en raison de certaines règles de langage. Examinons deux exemples de code pour comprendre le problème :

Exemple de code 1 (erreur de compilation) :

<code class="language-c#">public void MyMethod(){
    int i = 10;

    for(int x = 10; x < 20; x++){
        int i = x; // 编译错误:在此作用域内重复声明变量 'i'
        object objX = new object(); // 编译错误:在此作用域内重复声明变量 'objX'
        object objX = new object();
    }
}</code>

Raison de l'erreur :

  • Point 1 : Deux variables locales nommées 'i' sont déclarées au sein du même bloc de code (corps de boucle). C# n'autorise pas les déclarations en double portant le même nom dans la même portée.
  • Point 2 : Une autre variable locale nommée 'objX' est déclarée dans la même portée que la variable précédente du même nom, violant les "règles d'identification" en C#. Cette règle stipule qu'au sein d'un bloc de code, les noms simples doivent toujours faire référence à la même entité.

Exemple de code 2 (compilé avec succès) :

<code class="language-c#">public void MyMethod(){
    for(int x = 10; x < 20; x++){
        int i = x; 
        object objX = new object();
    }
    for(int x = 10; x < 20; x++){
        int i = x;
        object objX = new object();
    }
}</code>

Raison du succès de la compilation :

Dans l'exemple de code 2, la règle « accolades implicites » de la boucle crée une portée distincte pour chaque itération de la boucle. Cela signifie :

  • Les deux variables nommées 'i' sont déclarées dans des portées différentes (différentes itérations de la boucle), évitant ainsi les erreurs de déclaration en double.
  • Deux variables nommées 'objX' sont également déclarées dans des scopes différents, satisfaisant aux "règles d'identification", permettant le succès de la compilation.

Ces deux exemples de code illustrent les effets subtils de la portée des variables en C# et la confusion qu'elle peut provoquer lorsqu'elle n'est pas comprise correctement.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn