首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >[Serializable]属性做什么ISerializable不做?

[Serializable]属性做什么ISerializable不做?
EN

Stack Overflow用户
提问于 2011-12-21 19:03:39
回答 2查看 5.3K关注 0票数 4

可能重复: 使用可序列化属性&实现ISerializable有什么区别?

班级标记Serializable是做什么的?例如:

代码语言:javascript
复制
[Serializable]
public Hashtable 
{
}

它与班级实现ISerializable有什么不同?例如:

代码语言:javascript
复制
public Hashtable : ISerializable
{
}

这与将班级标记为可序列化和实现ISerializable有什么不同?例如:

代码语言:javascript
复制
[Serializable]
public Hashtable : ISerializable
{
}

[Serializable]的目的是什么,而不是ISerializable

t;博士:[Serializable]是什么

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-21 19:06:16

我以为你和可序列化有联系,但你没有:

默认情况下,由SerializableAttribute标记的类型中的所有公共和私有字段都是序列化的,除非该类型实现ISerializable接口以覆盖序列化过程。

和,

应用SerializableAttribute属性,即使类也实现了ISerializable接口.

也就是说,Serializable属性指示可以序列化此类型。ISerializable表示此类型希望控制此类型的序列化方式。

或者,换一种说法,你的问题措辞错误。应该始终应用SerializableAttribute (对可序列化的类),并且是序列化的“基本”级别。ISerializable添加了更多内容(通过允许您编写代码来控制进程)。

票数 14
EN

Stack Overflow用户

发布于 2011-12-21 19:05:57

ISerializable意味着您必须重写/实现方法void GetObjectData

[Serializable]指令让编译器知道这个类可以序列化。如果类不符合要求,则CLR将引发异常: ie默认构造函数、未知类型等。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8594957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档