在类的属性中,Dictionary有什么问题?

Fre*_*ice 3 .net c# .net-4.0 .net-3.5

为什么这段代码不起作用?

public class A   
{
   public Dictionary<int, string> dic { get; set; }   
}

class Program   
{
    public static void Main()
    {
        A a = new A();
        a.dic.Add(1, "a");
    }   
}
Run Code Online (Sandbox Code Playgroud)

错误:System.NullReferenceException未处理Message = Object引用未设置为对象的实例.

Jon*_*eet 7

您尚未初始化该属性,因此值为a.dicnull(任何引用类型的默认值).

你需要这样的东西:

a.dic = new Dictionary<int, string>();
Run Code Online (Sandbox Code Playgroud)

...或者你可以在构造函数中初始化它.

另一方面,直接访问类的内部工作并不是一个好主意 - 你基本上没有封装.