List在反序列化时候数量倍增问题

本文探讨了在反序列化过程中List数量异常倍增的问题。原因是反序列化时并非简单赋值,而是通过构造函数和类的属性填充,类似Add操作,导致List元素数量翻倍。为避免此问题,建议不在类的构造函数中初始化List并添加元素。

反序列化的时候是使用构造函数生成一个实例,然后将内容根据类的属性或字段进行填充,不是赋值操作,是以一种类似于Add的方式进行填充。

public Class A
{
	public List<int> Test{ set; get; }
	public A()
	{
		for(int i=0; i<12; i++)
		{
			Test.Add(0);
		}
	}
}

//执行以下代码
{
	A pT = new A();
	string tData = JsonConvert.SerializeObject(pT, Formatting.Indented);
	A pK = JsonConvert.DeserializeObject<A>(tData);
}

执行上述的代码后,pK.Test.Count的值为24,而不是12。

所以在要进行序列化反序列化操作的类的构造函数中不要对List进行实际的添加元素初始化操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值