Помогите мне, пожалуйста, как работает ConcurrentDictionary? у меня есть это:Как работать с OUT-значением в ConcurrentDictionary.TryGetValue?
UsersOnlineClass client;
if (UsersOnlineDictionary.TryGetValue(comClientID, out client)) { }
я должен изменить некоторые значения в клиента и сохранить изменения в ConcurrentDictionary. Как будет правильно?
UsersOnlineClass updatedClient = new UsersOnlineClass();
updatedClient = client; //make copy
updatedClient.someInt = -1;
if (UsersOnlineDictionary.TryUpdate(client.Client_id, updatedClient, client)) { }
или я могу просто сделать это, и этого будет достаточно?
client.someInt = -1;
Просто проверьте, и вы увидите. Поскольку 'UsersOnlineClass' представляется ссылочным типом, вы можете использовать оба способа, хотя один лайнер легче понять. – dotnetom
Является ли' UsersOnlineClass' 'классом' или' struct'? Если класс, 'updatedClient = client; // make copy' фактически не будет копировать класс. Если структура, вам не нужно ее копировать локально, потому что она уже будет скопирована из словаря. ([См. Здесь в разделе 'struct assign'] (https://msdn.microsoft.com/en-us/library/saxz13w4.aspx)). – dbc