3

我正在尝试在字典中保存一个大厅系统。

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

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

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

lobbys.Add("dSd244SfasdD", null);

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

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

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

4

5 回答 5

9

您必须首先实例化大厅字典(其中包含字典):

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");
于 2013-02-04T06:52:35.720 回答
4

需要实例化您的字典。

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

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

于 2013-02-04T06:49:50.703 回答
3

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

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

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

于 2013-02-04T06:49:20.903 回答
1

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

 private Dictionary<string, Dictionary<string, string>> lobbys = new Dictionary<string, Dictionary<string, string>>();
于 2013-02-04T06:50:26.630 回答
0
private Dictionary<string, Dictionary<string, string>> lobbys
    = new Dictionary<string, Dictionary<string, string>>();
于 2014-01-30T07:32:05.920 回答