У меня есть проблема. Когда я запускаю свою программу, она придумывает ошибку, конкретно ошибка CS1023. Я предполагаю, что это - потому что у меня есть объявление в операторе, но я не знаю, как еще написать код. Иногда C# раздражает меня, потому что в C++ мне могли сойти с рук подобные вещи... так или иначе, вот код. Я ценил бы его, если кто-то мог бы объяснить это мне. Сообщение об ошибке Ссылка
void BtnTotalSeasonsClick(object sender, EventArgs e)
{
using (var stream = new FileStream(drvFile, FileMode.Open, FileAccess.ReadWrite))
Byte[] bytes = System.Text.ASCIIEncoding.GetBytes(txtTotalSeasons.Text);
{
stream.Position = 4;
Stream.WriteByte(0xCD);
}
}
Фиксированный Код с ошибкой CS0120.
{
using (var stream = new FileStream(drvFile, FileMode.Open, FileAccess.ReadWrite))
{
Byte[] bytes = System.Text.ASCIIEncoding.GetBytes(txtTotalSeasons.Text);
stream.Position = 4;
Stream.WriteByte(0xCD);
}
}
В коде, который вы вставили, очевидно, нет ничего неправильного. Возможно, ошибка находится где-то еще, выше этого места, и компилятор запутался?
А, я вижу, вы изменили код.
Проблема в том, что вы объявляете массив Byte[]
вне блока intended using
. Поскольку область видимости объявления как такового составляет всего одну строку, это является логической ошибкой, и компилятор фиксирует ее с помощью ошибки времени компиляции.
Компилятор интерпретирует ваш код следующим образом:
using (var stream = new FileStream(drvFile, FileMode.Open, FileAccess.ReadWrite))
{
Byte[] bytes = System.Text.ASCIIEncoding.GetBytes(txtTotalSeasons.Text);
}
{
stream.Position = 4;
stream.WriteByte(0xCD);
}
Чтобы исправить это, переместите Byte[]
внутрь скобок или за пределы блока using
:
using (var stream = new FileStream(drvFile, FileMode.Open, FileAccess.ReadWrite))
{
Byte[] bytes = System.Text.ASCIIEncoding.GetBytes(txtTotalSeasons.Text);
stream.Position = 4;
stream.WriteByte(0xCD);
}
-или-
Byte[] bytes = System.Text.ASCIIEncoding.GetBytes(txtTotalSeasons.Text);
using (var stream = new FileStream(drvFile, FileMode.Open, FileAccess.ReadWrite))
{
stream.Position = 4;
stream.WriteByte(0xCD);
}
Лично мне нравится, когда компилятор раздражается, поскольку это спасает меня от ошибки времени выполнения.