字典 - 未将对象引用设置为对象的实例

时间:2013-02-04 06:47:59

标签: c#

我正试图在字典里面举行一个大厅系统。

private Dictionary<string, Dictionary<string, string>> lobbys;

第一个字符串是Lobby ID,字典中的字典包含大厅中的客户端用户名。

当我尝试在字典中创建一个新的“大厅”时,如下所示:

lobbys.Add("dSd244SfasdD", null);

(“dSd244SfasdD”是唯一的大厅ID,null是我尚未创建的空字典(因为它还没有用户))

我收到此错误:“引用的对象未设置为对象的实例。”

我不确定我做错了什么,而且我对C#还不熟悉。请帮忙。谢谢:))

5 个答案:

答案 0 :(得分:5)

您必须首先实例化lobbys Dictionary(包含词典):

lobbys = new Dictionary<string, Dictionary<string, string>>();

然后你可以添加到这个游戏中,当你这样做时,你应该实例化那些内部词典。

lobbys.Add("dsD244SfasD", new Dictionary<string, string>());

然后,当你添加到那些内部词典时:

lobbys["dsD244fasD"].Add("Client1", "Bob Jones");
lobbys["dsD244fasD"].Add("Client2", "Bill James");

答案 1 :(得分:3)

您尚未为变量指定值,因此它的默认值为null。 (不要忘记lobbys的值不是对象 - 它是引用)。您可以在构造函数中或在声明中为其指定值:

private Dictionary<string, Dictionary<string, string>> lobbys
    = new Dictionary<string, Dictionary<string, string>>();

(您可能希望同时将其设为readonly变量 - 这不会阻止您更改字典的内容,但这意味着该变量将始终引用相同的字典。)

答案 2 :(得分:3)

需要instantiate 您的词典。

lobbys = new  Dictionary<string, Dictionary<string, string>();

如果你的类中有一个字段,你可以在Field初始化它,或者你可以在类构造函数中初始化它。

答案 3 :(得分:1)

在使用之前,您需要先创建对象的实例。

 private Dictionary<string, Dictionary<string, string>> lobbys = new Dictionary<string, Dictionary<string, string>>();

答案 4 :(得分:0)

private Dictionary<string, Dictionary<string, string>> lobbys
    = new Dictionary<string, Dictionary<string, string>>();