C# 字典的清除和新实例化之间的区别

C# 字典的清除和新实例化之间的区别,c#,.net,vb.net,C#,.net,Vb.net,专家们, 我有一段代码,创建一个字典并将其添加到列表中。现在,我使用相同的dictionary对象将下一组键值对添加到dict中,并再次将相同的dictionary对象添加到列表中。现在,在这两个操作之间,我执行了Dictionary.clear() 当我试图检索这些值时,这是一个问题。该目录中没有任何值。我得到了一个索引超出范围的错误。 在我删除clear指令并再次实例化之后。这个问题解决了 但是怎么做呢 一旦你添加到字典中,那么对象的一个副本就会添加到字典中。我对原始对象做了什么,清楚吗?或

专家们, 我有一段代码,创建一个字典并将其添加到列表中。现在,我使用相同的dictionary对象将下一组键值对添加到dict中,并再次将相同的dictionary对象添加到列表中。现在,在这两个操作之间,我执行了Dictionary.clear()

当我试图检索这些值时,这是一个问题。该目录中没有任何值。我得到了一个索引超出范围的错误。 在我删除clear指令并再次实例化之后。这个问题解决了

但是怎么做呢

一旦你添加到字典中,那么对象的一个副本就会添加到字典中。我对原始对象做了什么,清楚吗?或者它不应该影响已经作为副本添加的对象吗

添加到口述词后,对象的副本将添加到口述词中 字典

这是不对的。将词典添加到列表时,会添加对词典的引用。然后清除字典时,引用仍指向同一字典,因此得到一个空字典


如果你需要一本新词典,那么你应该使用
new
。广义地说,如果你不使用
new
,你就不会得到一个新的。

你能展示一个吗?我的问题不是很清楚吗?为什么要投票否决?你能说吗