通常情况下,所有引用类型在没有引用时都会被垃圾回收。枚举变量呢?它是否会被垃圾回收,即使它超出了范围(意味着它不会被更多地引用)?
发布于 2011-08-21 01:42:58
你的问题写得很混乱。
通常情况下,所有引用类型在没有引用时都会被垃圾回收。
不收集引用类型。收集引用类型的实例。当实例没有引用时,它们不会被收集。当垃圾回收器运行并确定无法从已知的活动根访问被引用的对象时,将回收它们。
枚举变量呢?它是否会被垃圾回收,即使它超出了范围(意味着它不会被更多地引用)?
变量的作用域是程序文本的区域,在该区域中可以通过变量的名称来访问变量。变量的作用域只与它的生命周期松散地联系在一起,这就是您所询问的。变量的生命周期可以长于或短于程序控制在其作用域中的时间段!
此外,完全不清楚您所说的“枚举变量将被垃圾收集吗?”变量是存储位置,所以变量必须在某个地方。变量在哪里??它是一个类的字段吗?它是一个局部变量吗?它是lambda的闭合外部变量吗?它是枚举类型数组的元素吗?所有这些都会影响是否收集与变量关联的存储,如果收集,何时收集。
你的问题并不像你问的那样有任何意义。你能澄清这个问题吗?
你可能还想读一下我对这个相关问题的回答:
发布于 2011-08-21 01:37:13
C#中的枚举是一个值类型,因此将遵循值类型的垃圾回收规则,该规则根据该类型的声明范围而定。你可以在网上找到很多信息。下面是引用和值类型比较的示例链接,也是从GC的角度。
http://www.albahari.com/valuevsreftypes.aspx
https://stackoverflow.com/questions/7133420
复制相似问题