【发布时间】:2015-01-25 19:19:37
【问题描述】:
请帮助我了解 ConcurrentDictionary 是如何工作的? 我有这个:
UsersOnlineClass client;
if (UsersOnlineDictionary.TryGetValue(comClientID, out client)) { }
我必须更改 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似乎是引用类型,因此您可以同时使用这两种方式,尽管一种更容易理解 -
UsersOnlineClass是class还是struct?如果是类,updatedClient = client; //make copy不会实际复制该类。如果是结构,则不需要在本地复制它,因为它已经从字典中复制出来了。 (See here onstruct assignment)。