Я использую словарь для хранения данных в моем проекте 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;
через некоторое время, словарь потерял его.
«Словарь» не теряет данные. Если вы поместите данные в «Словарь», то он будет там, пока вы не выберете его снова. Если данных нет, это потому, что вы его вытащили. Вы, должно быть, делаете что-то неправильно, мы никак не можем догадаться, что это может быть. – jmcilhinney
Вы проверили реализацию GetHashCode() - реализации в AgentPlayerObject? Если он основан на изменяемых данных, и игрок фактически мутирован, GetHashCode() может возвращать другой хеш, чем он первоначально возвращался, когда игрок был добавлен в словарь, что может объяснить, почему последующая попытка восстановить его данные со временем сработала. –
Как выглядит метод AgentPlayerObject.Equals? Как изменяется PlayerDataList.Count с течением времени? –