我正试图在字典里面举行一个大厅系统。
private Dictionary<string, Dictionary<string, string>> lobbys;
第一个字符串是Lobby ID,字典中的字典包含大厅中的客户端用户名。
当我尝试在字典中创建一个新的“大厅”时,如下所示:
lobbys.Add("dSd244SfasdD", null);
(“dSd244SfasdD”是唯一的大厅ID,null是我尚未创建的空字典(因为它还没有用户))
我收到此错误:“引用的对象未设置为对象的实例。”
我不确定我做错了什么,而且我对C#还不熟悉。请帮忙。谢谢:))
答案 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>>();