C#初始化列表属性

本文关键字:属性 列表 初始化 | 更新日期: 2023-09-27 18:22:33

我有以下类。。。如何使用一些值进行初始化
我的问题是,我如何用Main中的一些值初始化上面的RootObject例如

    Rootobject robj = new Rootobject();
    robj.inchistor.Add()     

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    namespace JsonSample3
    {
        public class Customerinfo
        {
            public string customername { get; set; }
            public string address { get; set; }
            public string postcode { get; set; }
        }
        public class Inchistory
        {
            public Customerinfo customerinfo { get; set; }
            public string r { get; set; }
            public string reference { get; set; }
            public string region { get; set; }
        }
        public class RootObject
        {
            public List<Inchistory> inchistory { get; set; }
        }

    }
    class Program
    {
            static void Main(string[] args)
            {
               RootObject robj = new RootObject{ r = "", }
            }
    }

   Am having above classes namely CustomerInfo, Inchistory and Rootobject

C#初始化列表属性

任何引用类型的默认值都是null。所以我假设当你尝试添加值时,你得到了一个NullReferenceException。您可以在对象的构造函数中将列表属性初始化为空列表:

public class RootObject
{
    public List<Inchistory> inchistory { get; set; }
    public RootObject()
    {
        inchistory = new List<Inchistory>();
    }
}

现在,默认情况下,RootObject的任何实例都将有一个有效(空)列表,允许您向其中添加:

Rootobject robj = new Rootobject();
robj.inchistor.Add(someInstanceOfInchistory);

不确定您在问什么。您是否正在寻找对象和集合初始化的组合?

RootObject robj = new RootObject() 
{
    inchistory = new List<Inchistory>() 
    {
       new Inchistory() 
       {
           r = "foo",
           reference = "bar",
           customerinfo = new CustomerInfo()
           {
                customername = "joe blogs",
                address = "somewhere",
                postcode = "xxx xxxx"
           },
           region = "somewhere"
       },
       new Inchistory()
       {
           // etc
       }
    }
};

或者,如果你现在没有东西要添加,你可以只做:

RootObject robj = new RootObject() 
{
    inchistory = new List<Inchistory>() 
};

或者,您可以按照David的建议,在类构造函数中初始化列表。