我正在使用以下代码:
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"
为什么不工作?
提前感谢。
答案 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>();