Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#二进制阅读器工作异常_C#_Methods_Io_Stream - Fatal编程技术网

C#二进制阅读器工作异常

C#二进制阅读器工作异常,c#,methods,io,stream,C#,Methods,Io,Stream,当我调用ReadByte时,将执行一个重写的Read方法 代码在这里 public object Read(Stream s) { Issues.Clear(); if (AutoReset) Reset(); using (var r = new BinaryReader(s, Encoder, true)) { // check stream begin if (r.ReadByte() != StreamB

当我调用
ReadByte
时,将执行一个重写的
Read
方法

代码在这里

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()并将位置移到下一个。所以Read()方法在自定义类中被重写,所以ReadByte()转到重写的Read()方法

ReadByte()
显然是根据
Read(byte[],int,int)
实现的。这真的让你大吃一惊吗?那是什么类的覆盖?
ReadByte()
在其代码中调用
Read(byte[],int,int)
,这是正常的,因为
ReadByte()
所做的一切都是读取下一个字节,然后推进流。
ReadByte
实现自己版本的
Read
代码并没有什么真正的优势。…@Jeff Mercado,Clasies ReadByte是从“public class InstanceSerializer”“namespace EMx.Serialization”调用的,ReadByte调用的Read方法是在“public class MxStream”“namespace EMx.IO.MxData”上的。“公共类InstanceSerializer”没有使用“EMx.IO.MxData”。我想知道这些独立班级是如何合作的?