1
我不明白我的代码是如何出了错这里有一个代码块:parallel.foreach和字典集合
var filter=new dictionary<string,dictionary<string,bool>>();
//data here is of type dictionary<string,bool>
Parallel.Foreach(data,t=>
{
var filter1=data.Where(p=>p.Value).ToDictionary(p=>p.Key,p=>p.Value);
filter.Add(t.key,filter1);
});
有时候,最终过滤器中有一个空的关键,如果我用了这从来没有发生过一个简单的循环。
谢谢你,工作,但你能告诉我为什么该方法的表现就像是,我就算是同时添加数据,有数据没有空的关键原因,那么并行类如何创建一些本不应该存在的虚构任务 – JokingBear
@JokingBear当字典被同时修改时,其内部数据结构将变得无效,特别是当桶重新平衡时。并发更新会写入彼此的数据,因此即使非'null'项已提供给“Add”方法,键和/或值也会显示为“null”。事实上,你不能合法地向字典传递'null'键而不触发异常。 – dasblinkenlight