【问题标题】:Updating Dictionary C#更新字典 C#
【发布时间】:2013-04-10 17:27:19
【问题描述】:

我在更新字典时遇到问题

我也读过很多关于这个说法的话题(例如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;


    }

错误

当前上下文中不存在名称'key'

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

关于我做错了什么有什么想法吗?

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

【问题讨论】:

  • KeyAdd 方法的第一个参数。看起来您几乎想要拥有Info[key] = PlayerOneName。或者说,您的 old 代码不正确,而您 应该 有:Info.Add(PlayerOneName, scoreOne) 编辑:所以我打赌你稍后会通过错误的键访问字典.

标签: c# asp.net-mvc-4


【解决方案1】:

您似乎从未声明变量key。您可能不是有意在“新方法”行中使用“键”。

此外,我认为您的Dictionary 是倒退的,因为看起来玩家姓名应该是关键,而不是他们的分数。您当前声明它的方式 (Dictionary&lt;int, string&gt;),您正在创建一个字典,其键为 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#,如果您浏览一下):

【讨论】:

    【解决方案2】:

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

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

    其中有一个string key 作为参数。你也需要定义那个键。

    【讨论】:

      猜你喜欢
      • 2022-11-08
      • 2021-12-31
      • 1970-01-01
      • 2017-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多