Maison > développement back-end > C++ > Pourquoi C# se plaint-il de la redéclaration d'une variable dans différentes étendues ?

Pourquoi C# se plaint-il de la redéclaration d'une variable dans différentes étendues ?

Barbara Streisand
Libérer: 2025-01-16 16:58:15
original
316 Les gens l'ont consulté

Why Does C# Complain About Redeclaring a Variable in Different Scopes?

Portée de la variable C# : pourquoi le compilateur confond-il 'x' ?

L'extrait de code C# suivant :

<code class="language-csharp">if (true)
{
    string var = "VAR";
}

string var = "New VAR!";</code>
Copier après la connexion

Déclarer la variable 'var' pour la deuxième fois dans une portée externe génère l'erreur suivante :

Erreur 1 : Une variable locale nommée 'var' ne peut pas être déclarée dans cette portée car elle aurait une signification différente de celle 'var' qui est déjà utilisée pour représenter autre chose dans la portée "enfant".

Cette erreur se produit car C# applique des règles de portée strictes qui empêchent les variables portant le même nom d'être redéclarées dans des portées qui se chevauchent. Bien que la première déclaration « var » soit limitée à la portée interne et semble n'avoir aucun effet sur la portée externe, le compilateur traite les deux instances comme étant dans la même portée.

Le problème vient des limitations de la conception du compilateur. Il analyse les variables uniquement en fonction de leur portée, quel que soit l'ordre dans lequel elles sont déclarées ou utilisées. Donc, le code théoriquement valide suivant :

<code class="language-csharp">string var = "New VAR!";

if (true)
{
    string var = "VAR";
}</code>
Copier après la connexion

Le compilateur le considère également comme invalide.

Pour résoudre cette ambiguïté, il est recommandé d'utiliser des noms de variables différents ou d'utiliser des portées sœurs :

<code class="language-csharp">string varOuter = "New VAR!";

if (true)
{
    string varInner = "VAR";
}</code>
Copier après la connexion

Bien que les portées frères et sœurs soient techniquement valides, elles peuvent prêter à confusion et ne sont généralement pas recommandées. Il est également préférable de renommer les variables, ce qui permet de distinguer les variables de différentes portées.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal