我有以下代码:
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)
我在这里犯了什么愚蠢的错误?
答案 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);
}