如何销毁C#数据,如Dictionary <string,list <action <object =“”>&gt;&gt;?

时间:2017-09-07 11:12:50

标签: c# dictionary delegates

我定义了一个像Dictionary<string, List<Action<object>>>这样的对象来存储一些委托方法来调用。如果我想破坏这个字典。我是否需要先在字典中调用List.Clear()?或者只是致电Dictionary.Clear会好吗?

这一个:

foreach(KeyValuePair<string, List<Action<object>>> kvp in dict)
{
   kvp.Value.Clear();
}

dict.Clear();
dict = null;

或者这个:

dict.Clear();
dict = null;

3 个答案:

答案 0 :(得分:4)

如果您要将最后一次实时引用放到dict,请不要理会其中任何内容:如果null仍在范围内,则只需指定dict,或者不如果dict的范围即将结束,则可以做任何事情。

不需要显式清除字典或其包含的任何列表,因为垃圾收集器会以任何方式处理它。显式清除字典及其包含的列表将浪费CPU周期。

答案 1 :(得分:1)

只要您没有对DictionaryDictionary本身中存储的对象进行引用,就可以将其设置为null

dict = null;

GC会照顾其余部分。

答案 2 :(得分:0)

单凭这一点就行了。只有在全局级别声明字典时,才需要清除字典的引用。不需要清除本地对象。

    dict = null;

只要清除了对象的引用,就会在该代的下一个GC上从内存中清除它。