列为类中的属性

时间:2019-01-16 21:52:26

标签: c#

我有以下代码:

function setmembershipayment(usermembershipchoice) {
  switch (usermembershipchoice) {  
    case 'Silver': return "chargesilver.php";
    case 'Gold': return "chargegold.php";
    case 'Platinum': return "chargeplatinum.php";
    default: console.log('error'); break;
  }
}

$.ajax({
  type: "POST",
  url: setmembershipayment(usermembershipchoice),
  data: form.serialize(),
  success: function(response) {
    ...
  }
});

当我尝试创建订单对象的实例时,ItemList属性初始化会引发null错误,指出ItemList的get属性为null。该错误引发到public class Items { public string ItemName { get; set; } } public class Orders { public List<Items> ItemList { get; set; } } 行。答案可能很明显也很简单,但我看不到。这是代码:

orders.ItemList.Add(itm)

我在这里犯了什么愚蠢的错误?

4 个答案:

答案 0 :(得分:3)

您没有初始化属性,因此它为空。

尝试一下:

public class Orders
{
    public List<Items> ItemList { get; set; } = new List<Items>();
}

答案 1 :(得分:0)

该属性设置为默认值,在这种情况下为null。您可能想在构造函数中进行设置,并将设置器设为私有,以便以后无法将其设置为null

public class Orders
{
    public Orders()
    {
        ItemList = new List<Items>();
    }

    public List<Items> ItemList { get; private set; }
}

答案 2 :(得分:0)

您忘记初始化ItemsList,因此会出现nullpointer异常

public class Orders
{
    public List<Items> ItemList { get; set; } = new List<Items>();
}

答案 3 :(得分:0)

尚未使用新的List实例初始化List。

orders.ItemList = new List<Items>();

代码如下:

Orders orders = new Orders();
orders.ItemList = new List<Items>();
for (int i = 1; i < 10; i++)
{
    Items itm = new Items
    {
        ItemName = $"Item {i}"
    };
    orders.ItemList.Add(itm);
}