是什么导致了此代码中的空引用异常

本文关键字:引用 异常 代码 是什么 | 更新日期: 2023-09-27 18:32:10

我尝试向我的会话添加新的"订单"。我开始在我的全局.aspx文件中创建一个会话,Session_Start:

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) });

在最后一行,我得到 att nullreference 异常。为什么会这样呢?


以下是我的两个课程:

   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 的实例,然后再使用它。我建议像这样在构造函数中这样做......

将此添加到您的订单类

public class Order {
     ....other stuff...
    public Order() {
      OrderRow = new List<OrderRows>();
    }
}

创建新订单时,提交的 OrderRow 为空。必须在 Order 构造函数上初始化 Order 行。