Frage

Wenn ich schreibe:

var tagType = _reader.ReadByte();

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

    tagType = _reader.ReadByte();
}

... es funktioniert, aber wenn ich schreibe:

var tagType = _reader.ReadByte();

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

... Es funktioniert nicht und ich kann nicht verstehen, warum - ich bekomme unerwartete Ergebnisse. Hier ist die ReadNext3Bytes Methode:

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

Warum ist das so und wie kann ich es beheben?

Vielen Dank.

War es hilfreich?

Lösung

Es passiert seitdem Position wird während des Geänderung während Readbyte Rufen Sie an, was Sie sehen, ähnelt diesem Fall:

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

Assert.AreEqual(6, position);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top