-2

First class

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

Second Class

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

Now I wanna add Ck to 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: 'Object reference not set to an instance of an object.' MojDevnik.Tasks.listaCk.get returned null.

ric
  • 627
  • 1
  • 12
  • 23

2 Answers2

0

You need to initialise your list, you can do that in either the constructor or before you assign some value to it. Below is an example of how to do it in a constructor.

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

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

}
0

You need to instantiate you list first

change this

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

to

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

or

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

                t.listCk.Add(ck); *Here i get NullReferenceException*

to

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*

or

add a constructor

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

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

}
npo
  • 1,060
  • 8
  • 9
  • Thank you guys, now it works. When i do Tasks t = new Tasks(); doesn't all properties get instantiated? – Misa Misic Dec 07 '18 at 14:39
  • No, you have to explicitly create their instance because the list is not created yet and you are trying to add elements to an null list :) – npo Dec 07 '18 at 14:42