-2
我在我的c#項目中使用字典進行數據存儲。C#詞典:丟失數據
問題是在幾個小時內我的字典丟失了一些數據。 爲什麼?
public Dictionary<string, AgentHistory> ConnectRequestHistory = new Dictionary<string, AgentHistory>(); //IP - History
public Dictionary<AgentPlayerObject, AgentPlayerData> PlayerDataList = new Dictionary<AgentPlayerObject, AgentPlayerData>(); // AgentPlayerObject - PlayerData
當我嘗試了一段時間後得到PlayerDataList[player].CharName;
,該詞典已經失去了它。
「Dictionary」不會丟失數據。如果你把數據放到'Dictionary'中,那麼它就在那裏,直到你再次拿出來。如果數據不在那裏,那是因爲你把它拿出來了。你一定是做錯了,因爲我們無法猜測那可能是什麼。 – jmcilhinney 2014-10-05 10:32:39
您是否檢查過AgentPlayerObject類的GetHashCode() - 實現?如果它基於可變數據,並且播放器實際上發生了變異,GetHashCode()可能會返回與最初在播放器添加到Dictionary時返回的哈希不同的哈希,這可以解釋爲什麼後續嘗試檢索數據會隨着時間的推移而失敗。 – 2014-10-05 10:44:23
AgentPlayerObject.Equals方法的外觀如何? PlayerDataList.Count如何隨時間變化? – 2014-10-05 11:01:21