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


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

Обновлен: Ноябрь 2007

Сообщение об ошибке

Невозможно использовать локальную переменную "имя" перед ее объявлением. Объявление локальной переменной скрывает поле "имя".
Cannot use local variable 'name' before it is declared. The declaration of the local variable hides the field 'name'.

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

Чтобы исправить эту ошибку

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

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

Пример

Следующий код вызывает ошибку CS0844:

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