【发布时间】:2012-06-22 08:04:39
【问题描述】:
这里我有一段代码,展示了我想如何更新字典中的值的示例。 我认为这不是最好的方法,因为我不确定它是否是线程安全的。
编辑:这只是 POC 代码,我的意思是将 Keys 复制到数组,然后在 Dictionary 上做一些事情。伙计们,我不能在这里发布我雇主的代码,所以我举了一个例子来说明问题。
当我将 Keys 复制到数组时,我可能会在代码的其他部分中使用 Dictionary 引用,其中可能会添加一些键,然后此类函数不会更新所有键,因为我在某些时候已经复制了这些键的时间。我应该继承或包装字典并用锁对其进行操作,还是有更简单的方法?
我应该如何以正确的方式更新值?
static void Main(string[] args)
{
Dictionary<string, int> dic = new Dictionary<string, int>();
dic.Add("Kej1",0);
dic.Add("Kej2",1);
dic.Add("Kej3", 3);
dic.Add("Kej4", 3);
String[] arr = new string[dic.Count] ;
dic.Keys.CopyTo(arr,0);
foreach (var va in arr)
{
Console.WriteLine(dic[va] + " " + va);
dic[va] = 10;
Console.WriteLine(dic[va] + " " + va);
}
Console.ReadKey();
}
【问题讨论】:
-
不知道这个例子应该展示什么。您提到了多个线程,但该示例没有。试着改写你的问题。
-
这看起来像一个控制台应用程序。您的代码中没有多个线程。
-
@Jon 我已经更新了描述,这只是 POC 代码,有些想象力会被欣赏,我不能在这里发布“不是我的代码”。
标签: c# dictionary