-1

我在更新字典时遇到问题

我也读过很多关于这个说法的话题(例如Link

ExampleDict[key] = value;

我正在尝试对自己的代码进行此操作:

模型:

  public Dictionary<int, string> Info { get; set; }
  public Dictionary<int, string> GetInfo(int id)
    {
        Info = new Dictionary<int, string>();

        var game = db.Games.Find(id);

        var playerOne = db.Players.Find(game.PlayerOneId);
        var playerTwo = db.Players.Find(game.PlayerTwoId);
        var PlayerOneName = playerOne.Nickname;
        var PlayerTwoName = playerTwo.Nickname;
        int scoreOne = CountScorePlayerOne();
        int scoreTwo = CountScorePlayerTwo();


        // old aproach:
        Info.Add(scoreOne, PlayerOneName);
        Info.Add(scoreTwo, PlayerTwoName);

        //new approach
        Info[key] = scoreOne;

        return Info;


    }

错误

当前上下文中不存在名称“键”

注意:我是一名学生,这是一个学校项目。

关于我做错了什么的任何想法?

通过 Jon Senchyna 的代码示例解决,谢谢!

4

2 回答 2

7

看来您从未声明变量key。您可能不是要在“新方法”行中使用“键”。

另外,我认为您的Dictionary做法是倒退的,因为看起来球员的名字应该是关键,而不是他们的分数。您当前声明它的方式(Dictionary<int, string>),您正在创建一个字典,其键是int(分数?),值是string(名称?)。

以下是我建议的编辑:

// Corrected dictionary definitions
public Dictionary<string, int> Info { get; set; }
public Dictionary<string, int> GetInfo(int id)
{
    // You may want to use a local variable here instead
    Info = new Dictionary<string, int>();

    ...

    Info[PlayerOneName] = scoreOne;
    Info[PlayerTwoName] = scoreTwo;

    return Info;
}

以下是一些有用的链接,可用于了解有关使用 Dictionary 类的更多信息(如果您浏览一下,通常是 C#):

于 2013-04-17T19:37:51.323 回答
1

在您问题的示例链接中,有方法:

public static void SafeDictionaryAdd(Dictionary<string, object> dict, string key, object view)

其中有一个string key作为论点。您还需要定义该键。

于 2013-04-17T19:39:18.220 回答