2013-04-17 76 views
-1

我有一个问题,更新字典更新字典C#

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


    } 

错误

名称“关键”不在当前情况下存在

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

关于我在做什么的错误?

通过乔恩Senchyna的代码示例解决了,谢谢!

+0

的'Key'是用于'Add'方法的第一个参数。它几乎看起来像你想拥有'Info [key] = PlayerOneName'。或者振振有词,你_old_代码是不正确的,你_should_有:'Info.Add(PlayerOneName,scoreOne)'编辑:所以我打赌以后您通过按错键访问字典。 –

回答

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; 
} 

这里是学习更多有关使用字典类的一些有用的链接(一般和C#如果你浏览了一下周围):

+0

代码示例帮助我!非常感谢! – JochemQuery

1

在为例在你的问题E链路有方法:

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

其中有一个string key作为参数。您也需要定义该密钥。