如果没有构造函数,序列化如何工作?

Jam*_*mie 4 .net serialization

我不确定这段代码是如何工作的.

    [Serializable]
    class Blah
    {
        public Blah(int value)
        {
            this.value = value;
        }

        public int value;
    }

        BinaryFormatter b = new BinaryFormatter();
        Blah blah = new Blah(4);
        MemoryStream s = new MemoryStream();
        b.Serialize(s, blah);
        s.Seek(0, SeekOrigin.Begin);
        blah = null;
        blah = (Blah)b.Deserialize(s);
Run Code Online (Sandbox Code Playgroud)

由于我没有无参数构造函数,因此反序列化器可以创建Blah的新实例似乎很奇怪.

Joã*_*elo 5

反序列化过程使用FormatterServices.GetUninitializedObject获取对象而不调用任何构造函数.