tracelistener显式在foreach循环对象中Dispose()
本文关键字:Dispose 对象 循环 foreach tracelistener | 更新日期: 2023-09-27 18:15:11
我有类似于下面的代码,我应该显式地处理下面代码中的侦听器对象吗?
。E应该这样写代码:
foreach (System.Diagnostics.TraceListener listener in localObj.Listeners)
listener.WriteLine("some logging");
被重写为:
foreach (System.Diagnostics.TraceListener listener in localObj.Listeners)
{
listener.WriteLine("some logging");
listener.Dispose();
}
对于任何一种编码方式的原因都将受到赞赏。
在上面的代码中,您只是访问每个TraceListener
的引用并调用WriteLine()
方法,在这种情况下不需要调用Dispose()
。
对不起,我想评论克里斯宾特的答案,但是我不能。总之,我同意ChrisBint的观点,在上述场景中不应该调用Dispose:
- tracelisters属于localObj,并且localObj负责控制其内部对象的生命周期。因此,第二段代码看起来很奇怪。
- 如果你实现localObj的getter。侦听器生成新的集合,不暴露localObj的真正内部,您不需要显式调用Dispose,它将由GarbageCollector调用。