【发布时间】:2012-07-13 19:09:49
【问题描述】:
假设我有
void foo () {
Bar bar = new Bar(); // bar is never referred to after this line
// (1)
doSomethingWithoutBar();
}
在 (1) 处,对象 bar 是否指向 符合 的垃圾回收条件?还是bar 也必须超出范围?如果GC.Collect 被doSomethingWithoutBar 调用,会有区别吗?
这与了解 Bar 是否具有 (C#) 析构函数或类似的东西有关。
【问题讨论】:
-
我只是等着 Eric Lippert 过来照顾一下这个……
-
@StefanH,我想我已经看到 Eric 对一个与此非常相似的问题的回答(或他的博客文章),但我的 google-fu 现在失败了 =(
-
@Rob - 我知道!我试着在谷歌上搜索“C# 垃圾收集”,因为我认为他会是第一个结果。
-
仅供参考,在这些情况下(或更常见的是,当非托管资源需要保持活动状态时)的常见做法是使用GC.KeepAlive()。
标签: c# garbage-collection