-1

私は次のコードを使用しています:

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

4 に答える 4

3

何かkillerFieldを行う前に、 のインスタンスを作成する必要があります。Addプレーヤーを追加する時点では、プレーヤーはまだ を使用して作成されていませんnew Dictionary<DateTime,string>()

これは、宣言の一部として、または代わりにクラス コンストラクターで行うことができます。

于 2013-06-22T17:37:39.927 に答える
0

あなたが提供したコードが正しければ、次の解決策が機能することを 100% 確信しています。

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>();
于 2013-06-22T17:46:12.360 に答える