Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么不';t字段可序列化_C#_Field_Serializable - Fatal编程技术网

C# 为什么不';t字段可序列化

C# 为什么不';t字段可序列化,c#,field,serializable,C#,Field,Serializable,为什么在C#中,字段不能通过XML序列化程序序列化,而属性可以序列化?我知道属性实际上是方法,但我不明白为什么这会有区别。有人知道这个问题的答案吗 非常感谢 字段可序列化: XML序列化将的公共字段和属性序列化 对象, 或者将方法的参数和返回值转换为符合 指向特定的XML模式定义语言(XSD)文档。 XML序列化会产生具有公共属性和 转换为XML的字段。 System.Xml.Serialization包含序列化所需的类 以及反序列化XML From字段可序列化。事实上,所有字段在默认情况下都是

为什么在C#中,字段不能通过XML序列化程序序列化,而属性可以序列化?我知道属性实际上是方法,但我不明白为什么这会有区别。有人知道这个问题的答案吗


非常感谢

字段可序列化:

XML序列化将的公共字段和属性序列化 对象, 或者将方法的参数和返回值转换为符合 指向特定的XML模式定义语言(XSD)文档。 XML序列化会产生具有公共属性和 转换为XML的字段。 System.Xml.Serialization包含序列化所需的类 以及反序列化XML


From

字段可序列化。事实上,所有字段在默认情况下都是序列化的,除非您使用
非序列化属性标记它们


如果您谈论XML序列化,那么只有公共字段将被序列化,因为XML序列化只序列化对象的公共接口。

为什么您认为字段不可序列化?字段很可能是尚未序列化的数据类型,或者该字段不是公共的。您是否考虑了特定的序列化程序?像
XmlSerializer
DataContractJsonSerializer
protobuf-net
或其他什么?答案将取决于他们的实现和设计,因为他们希望包括字段、属性、索引器或任何其预期用途。其中一个答案说明了这一点(对不起,我在电话上,没有“共享”链接)但是我找不到任何关于他的信息it@ZacharyKniebel:只有一个答案表明了这一点:。它有一条评论说它是不正确的。谢谢你的帮助。起初,我没有意识到什么是可序列化的,什么不是可序列化的,可能取决于序列化的类型。非常感谢!这澄清了很多。