我定义了像 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;
如果您要删除最后一次实时引用dict
,请不要打扰任何内容:如果dict
保留在范围中,则只需分配null
,或者如果在范围内,则不做任何事情dict
的范围即将结束。
明确清除字典或所包含的任何列表,因为垃圾收集器都会以任何一种方式处理它。词典的明确清除及其包含的列表将是CPU周期的浪费。
只要您在Dictionary
或Dictionary
本身中存储的对象上没有引用,就可以将其设置为null
。
dict = null;
GC
将照顾其余的。
仅此功能。仅在全球级别声明字典时才清除字典的参考。不需要清除本地对象。
dict = null;
只要清除对象的引用,它将在该一代的下一个GC上从内存中清除。