用班级标记Serializable是做什么的?例如:
[Serializable]
public Hashtable
{
}它与班级实现ISerializable有什么不同?例如:
public Hashtable : ISerializable
{
}这与将班级标记为可序列化和实现ISerializable有什么不同?例如:
[Serializable]
public Hashtable : ISerializable
{
}[Serializable]的目的是什么,而不是ISerializable?
t;博士:[Serializable]是什么
发布于 2011-12-21 19:06:16
我以为你和可序列化有联系,但你没有:
默认情况下,由
SerializableAttribute标记的类型中的所有公共和私有字段都是序列化的,除非该类型实现ISerializable接口以覆盖序列化过程。
和,
应用
SerializableAttribute属性,即使类也实现了ISerializable接口.
也就是说,Serializable属性指示可以序列化此类型。ISerializable表示此类型希望控制此类型的序列化方式。
或者,换一种说法,你的问题措辞错误。应该始终应用SerializableAttribute (对可序列化的类),并且是序列化的“基本”级别。ISerializable添加了更多内容(通过允许您编写代码来控制进程)。
发布于 2011-12-21 19:05:57
ISerializable意味着您必须重写/实现方法void GetObjectData
[Serializable]指令让编译器知道这个类可以序列化。如果类不符合要求,则CLR将引发异常: ie默认构造函数、未知类型等。
https://stackoverflow.com/questions/8594957
复制相似问题