Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


Błąd kompilatora CS0844

Nie można użyć zmiennej lokalnej "name", zanim zostanie zadeklarowana. Deklaracja zmiennej lokalnej ukrywa pole "name".

Identyfikator może mieć tylko jedno znaczenie w danym bloku. Zmienne lokalne, które mają taką samą nazwę jak pola klasy, mogą ukryć pole, wprowadzając drugie znaczenie dla identyfikatora. W związku z tym kompilator generuje błąd podczas odwoływania się do pola klasy w metodzie, a następnie deklaruje zmienną lokalną o tej samej nazwie.

Aby poprawić ten błąd

  • Użyj this.num polecenia , aby odwołać się do pola klasy.

  • Nadaj zmiennej lokalnej inną nazwę od pola klasy.

Przykład

Poniższy kod generuje CS0844:

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

Poprawianie błędu przy użyciu polecenia this.num , aby odwołać się do pola klasy

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

Poprawianie błędu przez nadanie zmiennej lokalnej innej nazwy od pola klasy

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