Errore del compilatore CS0844

Aggiornamento: novembre 2007

Messaggio di errore

Impossibile utilizzare la variabile locale 'name' prima che sia dichiarata. La dichiarazione di variabile locale nasconde il campo 'name'.
Cannot use local variable 'name' before it is declared. The declaration of the local variable hides the field 'name'.

Un identificatore può avere solo uno significato in un blocco specificato. Le variabili locali che hanno lo stesso nome dei campi della classe possono nascondere il campo introducendo un secondo significato per l'identificatore. Il compilatore genera pertanto un errore quando si fa riferimento a un campo della classe in un metodo e si dichiara quindi una variabile locale con lo stesso nome.

Per correggere l'errore

  • Utilizzare this.num per fare riferimento al campo della classe.

  • Assegnare alla variabile locale un nome diverso dal campo della classe.

Esempio

Nel codice seguente viene generato l'errore CS0844:

class Test
    {
        int num;
        public void TestMethod()
        {
            num = 5; // CS0844
            int num = 6;        }
        public static int Main()
        {
            return 1;
        }
    }