Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.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#_Serialization_Binaryformatter - Fatal编程技术网

C# 二进制序列化无效,标头无效

C# 二进制序列化无效,标头无效,c#,serialization,binaryformatter,C#,Serialization,Binaryformatter,我得到了以下内容,而不是comlex代码,无论如何,我在反序列化时得到了一个异常。 例外情况是:二进制流“0”不包含有效的BinaryHeader。可能的原因是序列化和反序列化之间的无效流或对象版本更改 但我不明白我的代码有什么问题 using System.Runtime.Serialization.Formatters.Binary; using System.Runtime.Serialization; using System.IO; namespace Server { [S

我得到了以下内容,而不是comlex代码,无论如何,我在反序列化时得到了一个异常。 例外情况是:二进制流“0”不包含有效的BinaryHeader。可能的原因是序列化和反序列化之间的无效流或对象版本更改

但我不明白我的代码有什么问题

using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization;
using System.IO;

namespace Server
{
    [Serializable]
    class testclass
    {
        int a;
        int b;
        int c;
        public testclass()
        {
            a = 1;
            b = 2;
            c = 3000;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            testclass test = new testclass();
            IFormatter bf = new BinaryFormatter();
            MemoryStream ms = new MemoryStream(new byte[512],0,512,true,true);
            bf.Serialize(ms,test);
            testclass detest=(testclass)bf.Deserialize(ms);
            Console.ReadLine();
        }
    }
}

执行此操作时,流位于数据的末尾

bf.Serialize(ms,test);
在尝试之前,请将其倒带以开始

testclass detest=(testclass)bf.Deserialize(ms);

在流上使用
Position=0
执行此操作。

执行此操作时,流位于数据的末尾

bf.Serialize(ms,test);
在尝试之前,请将其倒带以开始

testclass detest=(testclass)bf.Deserialize(ms);

使用流上的
Position=0
来执行此操作。

您必须先倒回流的开头,然后才能反序列化或读取流示例:ms.Seek(0,请参见korigin.Begin)


您必须先倒带到流的开头,然后才能反序列化或读取流示例:ms.Seek(0,SeekOrigin.Begin)


好的,我不仅要倒流,而且我的消息必须从0开始,但我仍然有一些问题,我会用更多的代码更新我的问题好的,但是如果是新问题,请发布一个新问题,并单击回答,以解决您的问题。好的,上一个问题是关于不知道我自己的协议,所以谢谢你们两位指出问题OK我不仅要倒流,而且我的消息必须从0开始,但我仍然有一些问题,我会用更多的代码更新我的问题OK,但如果是新问题,请发布新问题,然后单击解决问题的答案。好的,最后一个问题是关于不了解我自己的协议,因此感谢你们两位指出问题