创建和添加新项目到新字典
本文关键字:字典 新字典 添加 新项目 创建 | 更新日期: 2023-09-27 18:16:53
public class Employee
{
public Dictionary<key, MyClass> MyDictionary;
// ....
}
MyClass cls;
if(employeeObject.MyDictionary != null && employeeObject.MyDictionary.ContainsKey(dicKey)
{
// ....
}
else
{
MyClass cls = new MyClass();
myclass.Name = "John";
//...set some other properties on it
employeeObject.MyDictionary.Add(dicKey, cls)
}
首先检查对象是否为空然后创建它,但即使我在else
部分创建它,然后我想在最后一行添加它,它仍然显示employeeObject.MyDictionary
是null
所以它崩溃了因为它是null.Add
那我该怎么办呢?
你应该在使用字典之前初始化它:
public class Employee
{
public Dictionary<key, MyClass> MyDictionary = new Dictionary<key, MyClass>();
}
否则,class字段将具有默认值,对于引用类型为null
。参见c#规范10.4.4字段初始化:
字段的初始值,无论是静态字段还是静态字段instance字段的默认值(章节5.2)类型。
您刚刚声明了您的Dictionary
,您还没有初始化它。您可以在声明时或在构造函数中这样做。
public Dictionary<key, MyClass> MyDictionary = new Dictionary<key, MyClass>();
或在构造函数中,如:
public class Employee
{
public Dictionary<key, MyClass> MyDictionary;
// ....
public Employee()
{
MyDictionary = new Dictionary<key, MyClass>();
}
}
对于您的问题:
首先检查对象是否为空,然后创建它,但是当我在else部分创建它时,
你检查你的字典是否为空,但你没有在else部分实例化它,而是创建一个MyClass
的对象。那对字典没有影响。
你可以这样做:
else
{
employeeObject.MyDictionary = new Dictionary<key, MyClass>();
MyClass cls = new MyClass();
myclass.Name = "John";
//...set some other properties on it
employeeObject.MyDictionary.Add(dicKey, cls)
}