2013-04-17 77 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作爲參數。您也需要定義該密鑰。