一尘不染

序列化静态类?

c#

如果我们序列化一个静态类会怎样?如果我们对其进行序列化,是否可以创建一个以上的静态类实例?

[Serializable]
public static class MyClass
{
    public static MyClass()
    {

    }

    public static bool IsTrue()
    {
       return true;
    }
}

假设我将对象XmlSerialize转换为XML文件,稍后再反序列化回对象。内存中存在另一个副本(当somone首次初始化静态校准时创建)。会不会有该对象的两个副本?如果是,我们可以停止吗?它适用于遵循单例模式的任何类吗?


阅读 541

收藏
2020-05-19

共1个答案

一尘不染

静态类从来没有 任何
实例:它们在IL中都是抽象的并且是密封的,因此CLR将阻止创建任何实例。因此,没有什么可序列化的。静态字段从不序列化,这是静态类可以具有的唯一状态。

关于XML序列化的问题毫无意义,因为没有人可以创建静态类的实例。

2020-05-19