[可序列化] 属性的作用是 ISerializable 没有的
本文关键字:ISerializable 作用 序列化 属性 | 更新日期: 2023-09-27 18:18:37
可能的重复项:
使用 Serializable 属性和实现 ISerializable 有什么区别?
用Serializable
标记类有什么作用?例如:
[Serializable]
public Hashtable
{
}
它与实现ISerializable
的类有何不同?例如:
public Hashtable : ISerializable
{
}
这与将类标记为可序列化并实现ISerializable
有何不同?例如:
[Serializable]
public Hashtable : ISerializable
{
}
与ISerializable
相比,[Serializable]
的目的是什么?
博士:什么是[Serializable]
?
我以为你已经链接到可序列化,但你没有:
默认情况下,类型中由
SerializableAttribute
标记的所有公共和私有字段都将序列化,除非该类型实现ISerializable
接口以重写序列化过程。
和
即使类还实现了
ISerializable
接口,也应用SerializableAttribute
属性 [...]
也就是说,Serializable
属性指示此类型可以序列化。 ISerializable
指示此类型想要控制此类型的序列化方式。
或者,换句话说,你的问题措辞错误。 SerializableAttribute
应始终应用于(可序列化类(,并且是序列化的"基本"级别。 ISerializable
增加了更多(通过允许您编写代码来控制进程(。
ISerializable
意味着你必须覆盖/实现该方法void GetObjectData
[Serializable]
指令让编译器知道可以序列化此类。如果类不满足要求,CLR 将抛出异常:即默认构造函数、未知类型等