c#将属性设置为字典列表中的对象-为什么是NullReferenceException

本文关键字:对象 为什么 NullReferenceException 列表 属性 设置 字典 | 更新日期: 2023-09-27 18:03:05

我的第一个问题。

我有这个代码在我的表单应用程序。我不明白为什么我总是得到一个NullReferenceException。

public partial class Form1 : Form
{
   Dictionary<string, Product> ProductList = new Dictionary<string, Product>();
   public Form1()
   {
      InitializeComponent();
      Product product = new Product();
      Position position = new Position();
      product.Name = "ACAD";
      position.Name = "Industry";
      ProductList.Add(product.Name, product);
      // NullReferenceException:
      ProductList["ACAD"].PositionList.Add(position.Name, position);
      // Following line works:
      //listBox1.Items.Add(ProductList["ACAD"]);
   }
}
class Product
{
   public string Name { get; set; }
   public Dictionary<string, Position> PositionList { get; set; }
}
class Position
{
   public string Name { get; set; }
}

Thank you =)

c#将属性设置为字典列表中的对象-为什么是NullReferenceException

为你的产品类添加一个构造函数:

class Product
{
   public string Name { get; set; }
   public Dictionary<string, Position> PositionList { get; set; }
   public Product()
   {
      PositionList = new Dictionary<string, Position>();
   }
}

你可以避免null引用异常试图添加一个条目到你的空字典:ProductList["ACAD"].PositionList.Add(position.Name, position);