C# 将 属性 设置为字典列表中的对象 - 为什么是 NullReferenceException?
C# Set property to an object in Dictionary list - Why NullReferenceException?
这是我的第一个问题。
我的表单应用程序中有这段代码。我不明白为什么我总是得到 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; }
}
谢谢=)
为您的产品添加构造函数class:
class Product
{
public string Name { get; set; }
public Dictionary<string, Position> PositionList { get; set; }
public Product()
{
PositionList = new Dictionary<string, Position>();
}
}
并且您可以避免尝试向空字典添加条目时出现空引用异常:ProductList["ACAD"].PositionList.Add(position.Name, position);
这是我的第一个问题。
我的表单应用程序中有这段代码。我不明白为什么我总是得到 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; }
}
谢谢=)
为您的产品添加构造函数class:
class Product
{
public string Name { get; set; }
public Dictionary<string, Position> PositionList { get; set; }
public Product()
{
PositionList = new Dictionary<string, Position>();
}
}
并且您可以避免尝试向空字典添加条目时出现空引用异常:ProductList["ACAD"].PositionList.Add(position.Name, position);