Dictionary-引用的对象未设置为对象的实例

本文关键字:对象 实例 设置 Dictionary- 引用 | 更新日期: 2023-09-27 17:57:43

我正试图将大厅系统保存在字典中。

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

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

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

lobbys.Add("dSd244SfasdD", null);

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

我得到这个错误:"引用的对象没有设置为对象的实例。"

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

Dictionary-引用的对象未设置为对象的实例

您必须首先实例化lobbys Dictionary(其中包含Dictionary):

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

然后您可以添加到这个lobby中,当您这样做时,您应该实例化那些内部字典。

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

然后,当你添加到这些内部字典中时:

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

需要实例化您的字典。

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

如果它是类中的字段,则可以在field中初始化它,也可以在类构造函数中初始化它。

您没有为变量赋值,所以它的默认值为null。(不要忘记lobbys的值不是对象,它是引用)。您可以在构造函数中或在声明中为其赋值:

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

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

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

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