为什么这段代码不起作用?
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");
}
}
错误: System.NullReferenceException未处理 Message =对象引用未设置为对象的实例。
答案 0 :(得分:7)
您尚未初始化该属性,因此a.dic
的值为null(任何引用类型的默认值)。
你需要这样的东西:
a.dic = new Dictionary<int, string>();
...或者你可以在构造函数中初始化它。
另一方面,直接访问类的内部工作并不是一个好主意 - 你基本上没有封装。
答案 1 :(得分:2)
Dictionary是一种引用类型。它的默认值为null。你的程序中没有“新词典”;可能应该有。
答案 2 :(得分:0)
public class A
{ public Dictionary dic;
A()
{
dic = new Dictionary();
}
}
class Program
{ public static void Main() { A a = new A(); a.dic.Add(1, "a");
}
}
答案 3 :(得分:0)
将A的定义更改为以下内容:
public class A
{
public Dictionary<int, string> dic { get; set; }
public A()
{
dic = new Dictionary<int, string>();
}
}
关键是你需要初始化“dic”属性才能使用它。