gpt4 book ai didi

c# - 私有(private)变量的 XML 序列化

转载 作者:太空宇宙 更新时间:2023-11-03 20:31:36 25 4
gpt4 key购买 nike

我是 XML 序列化的新手,我了解到 private 变量只有在公共(public)属性下才能被序列化。但是在反序列化后进行调试时,我也能够在反序列化的对象中找到私有(private)变量。有人可以解释一下吗?这是我的代码:

class Program
{
static void Main(string[] args)
{
XmlSerializer xs = new XmlSerializer(typeof(Nokia));
Nokia n = new Nokia();

using (Stream s = new FileStream("XMLFile", FileMode.Create, FileAccess.Write, FileShare.None))
{
xs.Serialize(s, n);
}

XmlSerializer xs1 = new XmlSerializer(typeof(Nokia));
using (Stream ds = File.OpenRead("XMLFile"))
{
Nokia dn = (Nokia)xs1.Deserialize(ds);
}
}
}

public class Mobile
{
public int Height = 10;
private int weight = 20;
public Mobile() {}
}

public class Nokia : Mobile
{
public string Signal = "Poor";
public Nokia() {}
}

当我在反序列化后快速观察我的对象时进行调试时,我能够在基础中找到变量 weight。这怎么可能?还是我在其他地方错了?

最佳答案

私有(private)变量仍将存在于反序列化对象中,但它们的值将不会存储在 XML 序列化版本中。

为了演示这一点,如果您创建对象的实例,请更改 weight 值,然后将其序列化为 XML。如果反序列化,反序列化后的对象中weight的值将是默认值,而不是原始对象上设置的值。

关于c# - 私有(private)变量的 XML 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7282395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com