清除词典的字典

问题描述:

我有一个类字典中的私有字段。清除词典的字典

private readonly Dictionary<string, Dictionary<int, int>> 
myDict = new Dictionary<string, Dictionary<int, int>>(); 

有关清除myDict的最佳做法是什么?我必须循环所有的值,并致电清除每个或是否足够,如果我只是打电话清除myDict ??
我正在寻找最佳性能。

+0

这取决于你的前提是你只是想擦去两个字典中的所有记录,并与空字典工作,我很可能只是创建一个新的实例情景 –

+1

:'myList中=新词典>(); '... – Fabjan

如果您拨打Clear(),它将清除主字典。如果没有对内部字典的引用,垃圾收集器将清除它们,因此无需对它们调用Clear()。如果它们仍然被引用,则必须首先对这些引用进行重新引用,否则可能会导致无效状态。

+0

我不叫它一个列表:)。为了这个问题,我只是改了名字。 – Rami

+0

那么不要把它称为你的问题列表。 –

+2

可能最有效的是使用'myList = new Dictionary >(myList.Count);'。 –

刚刚称为清除myList这是最好的方法。

在你的代码中,我可以看到myList是只读的,检查它是否可以被清除。

+0

'只读'表示您不能更改链接的实例,而不是内容。它不是'const'。 –

如果你保留(指针)二级字典的副本的某个地方,清除所有的二级字典是很有用的。如果您只是直接通过“母亲”字典或方法中的临时变量访问它们,那么垃圾收集器迟早会收集它们,因此您不必单独使用这些方法Clear