Странная проблема при попытке прочитать данные

StackOverflow https://stackoverflow.com/questions/1693948

  •  18-09-2019
  •  | 
  •  

Вопрос

Когда я пишу:

var tagType = _reader.ReadByte();

while (tagType != 8)
{
    var skip = ReadNext3Bytes() + 11;
    _reader.BaseStream.Position += skip;

    tagType = _reader.ReadByte();
}

... это работает, но когда я пишу:

var tagType = _reader.ReadByte();

while (tagType != 8)
{
    _reader.BaseStream.Position += ReadNext3Bytes() + 11; 
     tagType = _reader.ReadByte();
}

... Это не работает, и я не могу понять, почему - я получаю неожиданные результаты. Вот ReadNext3Bytes Метод:

    private long ReadNext3Bytes()
    {
        try
        {
            return Math.Abs((_reader.ReadByte() & 0xFF) * 256 * 256 + (_reader.ReadByte() & 0xFF) 
                * 256 + (_reader.ReadByte() & 0xFF));
        }
        catch 
        {
            return 0;
        }
    }

Почему это и как я могу это исправить?

Спасибо.

Это было полезно?

Решение

Это происходит с тех пор Должность изменяется во время Ридбейт Позвоните, то, что вы видите, похоже на этот случай:

int position = 1;
position += (position = 2) + 3;

Assert.AreEqual(6, position);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top