0

请帮助我了解 ConcurrentDictionary 是如何工作的?我有这个:

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

1 回答 1

2

如果UsersOnlineClass是一个class,那么您的代码就可以了(只要“someInt”是线程安全的),因为client then 是对字典中对象的引用。但是,如果UsersOnlineClassstruct,则必须按照示例代码中的方式进行操作,因为client将成为字典中内容的副本。

于 2015-01-25T19:27:23.603 回答