Прочитать на английском

Поделиться через


Ошибка компилятора CS0844

Невозможно использовать локальную переменную "имя" до ее объявления. Объявление этой локальной переменной скрыто в поле "имя".

Идентификатор может иметь только одно значение в конкретном блоке. Локальные переменные с именами, совпадающими с именами полей класса, могут скрывать поле, придавая второе значение идентификатору. Поэтому компилятор выдает ошибку, когда вы ссылаетесь на поле класса в методе, а затем объявляете локальную переменную с тем же именем.

Исправление ошибки

  • Используйте this.num для создания ссылки на поле класса.

  • Присвойте локальной переменной имя, отличное от имени поля класса.

Пример

Следующий код приводит к возникновению ошибки CS0844:

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

Исправление ошибки с помощью this.num ссылки на поле класса

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

Исправьте ошибку, предоставив локальной переменной другое имя от поля класса

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