.NET Hashtable克隆

the*_*ost 1 .net c# clone hashtable

给出以下代码:

Hashtable main = new Hashtable();

Hashtable inner = new Hashtable();
ArrayList innerList = new ArrayList();
innerList.Add(1);
inner.Add("list", innerList);

main.Add("inner", inner);

Hashtable second = (Hashtable)main.Clone();
((ArrayList)((Hashtable)second["inner"])["list"])[0] = 2;
Run Code Online (Sandbox Code Playgroud)

为什么数组中的值在"main"Hashtable中从1变为2,因为更改是在克隆上进行的?

Dan*_*nas 6

你克隆了Hashtable,而不是它的内容.

  • 如果要进行深度克隆,则必须通过迭代原始集合,克隆每个项目并将其插入新集合(您必须自己创建为空)来手动完成. (5认同)