Ошибка компилятора CS0844
Невозможно использовать локальную переменную "имя" до ее объявления. Объявление этой локальной переменной скрыто в поле "имя".
Идентификатор может иметь только одно значение в конкретном блоке. Локальные переменные с именами, совпадающими с именами полей класса, могут скрывать поле, придавая второе значение идентификатору. Поэтому компилятор выдает ошибку, когда вы ссылаетесь на поле класса в методе, а затем объявляете локальную переменную с тем же именем.
Используйте
this.num
для создания ссылки на поле класса.Присвойте локальной переменной имя, отличное от имени поля класса.
Следующий код приводит к возникновению ошибки CS0844:
class Test
{
int num;
public void TestMethod()
{
num = 5; // CS0844
int num = 6;
}
public static int Main()
{
return 1;
}
}
class Test
{
int num;
public void TestMethod()
{
this.num = 5; // Error fixed.
int num = 6;
}
public static int Main()
{
return 1;
}
}
class Test
{
int num;
public void TestMethod()
{
num = 5; // Error fixed.
int num2 = 6;
}
public static int Main()
{
return 1;
}
}
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв: