首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.Diagnostics.TraceListener循环对象中的显式Dispose()?

System.Diagnostics.TraceListener循环对象中的显式Dispose()?
EN

Stack Overflow用户
提问于 2011-11-18 22:21:36
回答 2查看 268关注 0票数 0

我有类似于下面的代码,我应该在下面的代码中显式地释放侦听器对象吗?

也就是说,这个代码应该是:

代码语言:javascript
复制
foreach (System.Diagnostics.TraceListener listener in localObj.Listeners)
    listener.WriteLine("some logging");

重写为:

代码语言:javascript
复制
foreach (System.Diagnostics.TraceListener listener in localObj.Listeners)
{
    listener.WriteLine("some logging");
    listener.Dispose();
}

任何一种编码方式的理由都将受到赞赏。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-18 22:24:55

在上面的代码中,您只是访问对每个TraceListener的引用并调用WriteLine()方法,在此场景中不需要调用Dispose()

票数 3
EN

Stack Overflow用户

发布于 2011-11-19 12:25:56

很抱歉,我想对Dispose的答案发表评论,但我不能。简而言之,我同意ChrisBint的观点,在上面提到的场景中,你不应该调用Dispose:

  1. TraceListeners属于localObj,localObj负责管理其内部对象的生命周期。因此,第二段代码看起来足够奇怪了。
  2. 如果您通过生成新集合来实现localObj.Listeners的getter,并且不公开localObj的实际内部,则不需要显式地调用Dispose,它将由Dispose调用
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8183897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档