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

时间:2010-11-05 21:43:33

标签: c# .net .net-3.5 .net-4.0

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

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 =对象引用未设置为对象的实例。

4 个答案:

答案 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”属性才能使用它。