|
|
1
33
如果并且仅当字典的旧版本不是由另一个引用建立的,那么创建一个新字典将使整个字典和它的内容(不是在其他地方建立的)可供GC清除。
在实践中,这两种选择的效果往往非常相似。不同之处在于,当在一个方法中使用这种方法时会发生什么:
|
|
|
2
19
正如已经被广泛报道过的,效果基本上是相同的。
技术上,
我也建议他们传达一个完全不同的意图,你应该使用
|
|
|
3
14
字典.clear())
新词典()
|
|
|
4
6
我想关键的区别是如果你打电话
希望这段代码能够简单地说明这一点:
如果我曾打电话
|
|
5
5
在第一个示例中,将打印原始集合中的所有内容。这是因为枚举器是在重新分配给新实例之前从引用变量创建的。
在第二个示例中,在枚举期间清除集合,这将导致
|
|
|
6
3
我相信提供了.clear(),这样如果您的字典作为只读属性公开,您就可以删除所有项。但是,如果它不是以这种方式公开的,并且您拥有完全的控制权,那么仅仅实例化一个新的字典可能会更容易。这两者之间也可能有轻微的性能差异。 |
|
|
7
1
如果您有多个对该词典的引用,并且清除了它,那么您将影响所有这些引用,就像创建一个新词典一样,您将只影响一个新引用。我想这取决于你想要的影响范围。显然,调用“new”会给您一个“cleared”字典,但您可能会丢失其他有用的状态信息。 |
|
|
8
0
dictionary.clear将清除字典中的所有项。新字典在内存中创建新的字典对象,同时孤立上一个字典,以便垃圾收集器稍后清理。 |
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |