-1
ReadByte
を呼び出すと、オーバーライドされたRead
メソッドが実行されます。C#BinaryReader working weird
コードはここに
public object Read(Stream s)
{
Issues.Clear();
if (AutoReset)
Reset();
using (var r = new BinaryReader(s, Encoder, true))
{
// check stream begin
if (r.ReadByte() != StreamBegin) // this r.ReadByte() goto..
{
ここ
私はReadByte
を呼んでいます。このBinaryReader
はSystem.IO
です。
そして次ReadByte()
方法はこちら
public override int Read(byte[] buffer, int offset, int count)
{
..... Something
}
このメソッドは、カスタムクラスであるに行きます。
コールスタックここにある:
..だから、なぜこれが起こるのでしょうか?なぜこのコードはこのように機能しますか?
'ReadByte()'は明らかに 'Read(byte []、int、int)'の形で実装されています。それは本当にあなたにとって大きな驚きですか? –
そのクラスはどのクラスで上書きされますか?すべての 'ReadByte()'が次のバイトを読み込んでからストリームを進めるので 'ReadByte()'が 'Read(byte []、int、int)'を呼び出すのは正常です。 'ReadByte'がそれ自身のバージョンの' Read'コードを実装するのに本当の利点はありません。 – Claies
@Jeff Mercado、Clasies ReadByteは "public class InstanceSerializer" "namespace EMx.Serialization"から呼び出され、ReadメソッドはReadByteは "public class MxStream" "namespace EMx.IO.MxData"にあります。と "public class InstanceSerializer"が "EMx.IO.MxData"を使用していませんでした。私はこれらの独立したクラスが一緒に働く方法を知りたいですか? –