我已经看到了使用一次性对象内联,所以很多时候开发商这里的实例.内联我的意思是:
var result = new DataTable().Compute("1 + 4 * 7", null);
Run Code Online (Sandbox Code Playgroud)
我知道该Dispose方法不会被调用,但由于没有对该对象进行引用,垃圾收集器将如何处理它?使用像这样的一次性物体是否安全?
我DataTable在我的例子中使用了一个,因为它是我找到的唯一具体例子,但我的问题一般适用于一次性物品.我不是那样亲自使用它们,我只是想知道如果它们以这种方式使用它们是否由GC处理它们.
Ond*_*cny 11
这里的关键问题Dispose是调用时间,这在您的示例中是未知的(提供了良好的实现IDisposable- 见下文).我考虑使用一个IDisposable没有using声明代码气味的实例.该类正在实施IDisposable,因此您作为用户应遵守其合同.
但是,请注意,在类的正确实现中IDisposable,终结器处理未处置对象的处理.因此,即使没有在a中实例化using,也应该在未知的时间和不同的(GC的)线程中执行处理.
我只是想知道如果以这种方式使用GC,它们是否会被不同的处理.
不,GC会对所有对象进行处理,并且不会以任何方式对待IDisposable实现.然而,在一个正确的implemenetation IDisposable的Finalize方法(由每个对象上调用GC除非基于每个对象的基础上抑制)调用将导致调用Dispose.
| 归档时间: |
|
| 查看次数: |
542 次 |
| 最近记录: |