我有一个非常简单的课程
public class A
{
public List<int> intList_a = new List<int>(); // {get; set;}
}
我有
A a = DynamicJson.Parse("{\"intList_a\":[0, 1]}");
A a2 = DynamicJson.Parse("{\"a\":{}}");
Console.WriteLine(a.intList_a.First());
Console.WriteLine(a2.intList_a.Count);
我发现如果我写{get; set;}而不是new List();我可以将json中的值转换为a.intList_a。否则我[0,1]不会进入我的名单。
但是,有时我需要找出a2.intList_a.Count。如果我只是使用{get; set;},intList将为null。我知道每次调用Count都可以检查null。但是如果我能在初始化时更容易,因为大部分时间我都需要这个值。
我也明白我的C#6.0让它更容易,但我的工作环境不允许我升级。
为什么我要写{get;设置;}使[0,1]进入列表? 无论如何都有这两个功能,我可以让我的List一个默认的新List(),而我可以将它们解析为我的A?
我可以在构造函数中编写新内容,但我的数据类太大而无法手工完成。
答案 0 :(得分:0)
C#中的字段和属性之间存在差异。
Int32 thisIsAField = 0;
Int32 ThisIsAProperty { get; set; }
动态对象可以具有在运行时创建/发现的其他属性,但不包含字段。 DynamicJson
在内部使用C#的dynamic功能。
但你可以轻松地将两者混合在一起:
private IList<Int32> _intList = new List<Int32>();
public IList<Int32> IntList
{
get { return this.intList; }
set { this.intList = value; }
}
我不知道这是否适用于DynamicJson
,但它适用于其他序列化系统。