Erreur du compilateur CS0844
Mise à jour : novembre 2007
Message d'erreur
Impossible d'utiliser la variable locale 'nom' avant qu'elle ne soit déclarée. La déclaration de la variable locale masque le champ 'nom'.
Cannot use local variable 'name' before it is declared. The declaration of the local variable hides the field 'name'.
Un identificateur ne peut avoir qu'une seule signification dans un bloc donné. Une variable locale qui porte le même nom qu'un champ de classe peut masquer ce champ en introduisant une deuxième signification pour l'identificateur. Le compilateur génère donc une erreur lorsque vous faites référence à un champ de classe dans une méthode, puis déclarez une variable locale avec le même nom.
Pour corriger cette erreur
Utilisez this.num pour faire référence au champ de classe.
Attribuez à la variable locale un nom différent de celui du champ de classe.
Exemple
Le code suivant génère CS0844 :
class Test
{
int num;
public void TestMethod()
{
num = 5; // CS0844
int num = 6; }
public static int Main()
{
return 1;
}
}