创建和添加新项目到新字典

本文关键字:字典 新字典 添加 新项目 创建 | 更新日期: 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.MyDictionarynull所以它崩溃了因为它是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)
}