【问题标题】:Add class to another class property public List<Class> ListOfThatClass { get; set; } [duplicate]将类添加到另一个类属性 public List<Class> ListOfThatClass { get;放; } [复制]
【发布时间】:2018-12-07 13:37:46
【问题描述】:

头等舱

 class Tasks
{
    public List<Ck> listCk { get; set; }
}

二等

class Ck
{
    public string CkName { get; set; }
    public string CkConentent { get; set; }
}

现在我想将 Ck 添加到 Tasks.listCk

Tasks t = new Tasks();
Ck ck = new Ck();
ck.CkName = "s1";
ck.CkConentent = "s2";

t.listCk.Add(ck); //Here I get NullReferenceException

System.NullReferenceException: '对象引用未设置为对象的实例。' MojDevnik.Tasks.listaCk.get 返回 null。

【问题讨论】:

  • t.listCk 为空。你需要做t.listCk = new List&lt;Co&gt;();

标签: c# class nullreferenceexception generic-list


【解决方案1】:

你需要初始化你的列表,你可以在构造函数中或者在你给它赋值之前这样做。下面是如何在构造函数中执行此操作的示例。

class Tasks
{
    public List<Ck> listCk { get; set; }

    public Task() {
        listCk = new List<Ck>();
    }

}

【讨论】:

    【解决方案2】:

    你需要先实例化你的列表

    改一下

     class Tasks
    {
        public List<Ck> listCk { get; set; }
    }
    

     class Tasks
    {
        public List<Ck> listCk { get; set; } = new List<Ck>();
    }
    

    Tasks t = new Tasks();
                    Ck ck = new Ck();
                    ck.CkName = "s1";
                    ck.CkConentent = "s2";
    
                    t.listCk.Add(ck); *Here i get NullReferenceException*
    

    Tasks t = new Tasks();
                    Ck ck = new Ck(){listCk  = new List<Ck>()};
                    ck.CkName = "s1";
                    ck.CkConentent = "s2";
    
                    t.listCk.Add(ck); *Here i get NullReferenceException*
    

    添加构造函数

       class Tasks
    {
        public List<Ck> listCk { get; set; }
    
        public Task() {
            listCk = new List<Ck>();
        }
    
    }
    

    【讨论】:

    • 谢谢大家,现在可以了。当我做任务时 t = new Tasks();不是所有属性都被实例化了吗?
    • 不,您必须显式创建他们的实例,因为列表尚未创建,您正在尝试将元素添加到空列表:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-20
    • 1970-01-01
    相关资源
    最近更新 更多