étrange problème lorsque vous essayez de lire les données
-
18-09-2019 - |
Question
Quand j'écris:
var tagType = _reader.ReadByte();
while (tagType != 8)
{
var skip = ReadNext3Bytes() + 11;
_reader.BaseStream.Position += skip;
tagType = _reader.ReadByte();
}
... il fonctionne, mais quand j'écris:
var tagType = _reader.ReadByte();
while (tagType != 8)
{
_reader.BaseStream.Position += ReadNext3Bytes() + 11;
tagType = _reader.ReadByte();
}
... il ne fonctionne pas, et je ne peux pas comprendre pourquoi - j'obtenir des résultats inattendus. Heres la méthode de ReadNext3Bytes
:
private long ReadNext3Bytes()
{
try
{
return Math.Abs((_reader.ReadByte() & 0xFF) * 256 * 256 + (_reader.ReadByte() & 0xFF)
* 256 + (_reader.ReadByte() & 0xFF));
}
catch
{
return 0;
}
}
Pourquoi est-ce, et comment puis-je résoudre ce problème?
Merci.
La solution
Il arrive depuis Position est changé en cours ReadByte appel, ce que vous voyez est semblable à ce cas:
int position = 1;
position += (position = 2) + 3;
Assert.AreEqual(6, position);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow