ISizableizable没有[Serializable]属性做什么?

Ian*_*oyd 4 .net c# serialization

可能重复:
使用Serializable属性和实现ISerializable有什么区别?

什么是标记一个Serializable做什么?例如:

[Serializable]
public Hashtable 
{
}
Run Code Online (Sandbox Code Playgroud)

它与实施课程有什么不同ISerializable?例如:

public Hashtable : ISerializable
{
}
Run Code Online (Sandbox Code Playgroud)

又是怎样认为的标记不同序列化和实施ISerializable?例如:

[Serializable]
public Hashtable : ISerializable
{
}
Run Code Online (Sandbox Code Playgroud)

[Serializable]相反的目的是什么ISerializable

tl;博士:什么[Serializable]

Dam*_*ver 14

我以为你已经链接到Serializable,但你没有:

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

和,

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

也就是说,该Serializable属性表示可以序列化此类型.ISerializable表明这种想控制如何这种类型的序列化.


或者,换句话说,你的问题是错误的.SerializableAttribute应该始终应用(到可序列化的类),并且是序列化的"基本"级别.ISerializable添加更多(通过允许您编写代码来控制进程).