c# – 在此代码中导致空引用异常的原因是什么?

我尝试在我的Session中添加一个新的“Order”.我开始在Session_Start下的Global.aspx文件中创建一个会话:

Session.Add("Cart", new WebShopData.Order());

在我的登录页面上,我创建了一个新会话:

 Session["userID"] = "User";
        ((Order)Session["Cart"]).UserID = userID;

然后在我的商店页面,我想添加东西到会话:

 if ((Order)Session["Cart"] != null)
((Order)Session["Cart"]).OrderRow.Add(new OrderRows({ArticleID = 2, Quantity = 1) });

在最后一行,我得到了无引用异常.为什么会这样?

这是我的两个班级:

   public class Order
   {
    public List<OrderRows> OrderRow { get; set; }
    public string Address { get; set; }
    public string City { get; set; }
    public string Zip { get; set; }
    public int UserID { get; set; }
   }

  public class OrderRows
  {
    public int ArticleID { get; set; }
    public int Quantity { get; set; }

    public override string ToString()
    {
            return string.Format("Artikel: {0}, Antal: {1}.\n", ArticleID, Quantity);
    }
  }
最佳答案
您需要在使用之前创建OrderRow的实例.我建议在构造函数中这样做…

将其添加到Order类

public class Order {
     ....other stuff...

    public Order() {
      OrderRow = new List<OrderRows>();
    }
}

转载注明原文:c# – 在此代码中导致空引用异常的原因是什么? - 代码日志