本人表达能力有点弱,直接贴代码吧
var cd = new Dictionary<string, string>();
cd.Add("abc", "aaa");
cd.Add("abb", "ccc");
var v = cd.Values;
cd.Remove("abc");
Console.WriteLine(cd.Count);
Console.WriteLine(v.Count);
这时候输出的结果是 1 1,但如果将Dictionary换成ConcurrentDictionary,如下
var cdd = new ConcurrentDictionary<string, string>();
cdd.TryAdd("abc", "aaa");
cdd.TryAdd("abb", "ccc");
var vv = cdd.Values;
string s;
cdd.TryRemove("abc", out s);
Console.WriteLine(cdd.Count);
Console.WriteLine(vv.Count);
结果就变成了 1 2
请问这是什么原理,与v和vv的类型有关吗,还是值类型与引用类型的问题?