在字典错误中向字典添加值

时间:2013-06-22 17:25:04

标签: c#

我正在使用以下代码:

private Dictionary<string, user> totalUsers = new Dictionary<string, user>();

“用户”类的相关部分

private Dictionary<DateTime,string> killerField;

public Dictionary<DateTime,string> killedPlayers
{
    get
    {
        return this.killerField;
    }
    set
    {
        this.killerField = value;
    }
}

我是怎么做这个动作的

totalUsers[playerName].killedPlayers.Add(DateTime.Now, dyingPlayer);

但是我收到了错误:

"Object reference not set to an instance of an object"

为什么不工作?

提前感谢。

4 个答案:

答案 0 :(得分:3)

您必须先创建killerField的实例,然后才能Add。在添加播放器时,尚未使用new Dictionary<DateTime,string>()创建。

您可以将此作为声明的一部分,也可以在类构造函数中执行。

答案 1 :(得分:1)

你很可能没有初始化字典killerFields,因此你无法添加它。

答案 2 :(得分:0)

因为totalUsers [User]不在你的字典中。此外,您将totalUsers定义为具有String键,该键返回User对象。然后用User键引用它。您需要填写TotalUsers,然后通过一些字符串令牌让用户退出。

像这样:

string userName = "yourusertoken";
totalUsers[userName].killedPlayers.Add(someDate,somestring);

答案 3 :(得分:0)

如果您提供的代码正确无误,我完全可以确定以下解决方案。

if(!totalUsers.ContainsKey(playerName))
{
    totalUsers.Add(playerName, new User());
    //or
    //totalUsers[playerName] = new User();  
}

//and then you can do actions on the initialized value in the dictionary

totalUsers[playerName].killedPlayers.Add(DateTime.Now, dyingPlayer);

你还应该在课堂内即时创建字典,也许在构造函数中

private Dictionary<DateTime,string> killerField = new Dictionary<DateTime,string>();