如果我宣布这样的字典:
private static Dictionary<string, object> aDict = new Dictionary<string, object>();
Run Code Online (Sandbox Code Playgroud)
现在我想在另一个地方使用它.我该如何重置?
aDict = new Dictionary<string, object>(); // like this?
aDict = null; // or like this?
Run Code Online (Sandbox Code Playgroud)
或其他重置样式?
CMS*_*CMS 87
您可以简单地使用Clear方法,它将删除所有键和值,然后您可以重用它而无需创建新实例:
aDict.Clear();
Run Code Online (Sandbox Code Playgroud)
正如每个人都几乎回答的那样,类.Clear()上提供的方法Dictionary应该是这里的方法(非常同意)。
只是为了弄清楚(当然对于新手来说;))为什么不采用其他方法,例如每次需要刷新字典时创建一个新实例
aDict = new Dictionary<string, object>(); // like this?
Run Code Online (Sandbox Code Playgroud)
因为即使这种方式有效,它也不是一种内存有效的方法,因为这会创建一个新实例并留下字典的旧实例等待 GC(垃圾收集器)处理它(因为它不再被引用) 。因此,当您不需要时,您会同意不消耗额外的内存:)
和
aDict = null; // or like this?
Run Code Online (Sandbox Code Playgroud)
因为这会让你的实例设置为 null,下次当 OP 想要将它用作字典时,OP 必须创建另一个实例(是的,你说得对,内存效率不高),而且这也不会是更好的编程风格这里有人可能最终会对变量进行操作.ContainsKey()(或对字典进行任何操作),如果仍然指向 null 对象,aDict则会导致 nullPointerException 。aDict
希望这个解释有帮助!谢谢阅读!