可以收集枚举变量垃圾吗?

时间:2011-08-20 17:30:52

标签: c# enums garbage-collection

通常,所有引用类型在没有引用时都是垃圾回收。枚举变量怎么样?它是否会被垃圾收集,即使它超出范围(意味着它没有被引用更多)?

3 个答案:

答案 0 :(得分:6)

你的问题写得很混乱。

  

通常,所有引用类型在没有引用时都是垃圾回收。

未收集参考类型。收集了实例的引用类型。当实例没有引用时,它们不会被收集。它们在垃圾收集器运行时收集,并确定无法从已知的生存根访问引用的对象。

  

枚举变量怎么样?它是否会被垃圾收集,即使它超出范围(意味着它没有被引用更多)?

变量的范围是程序文本的区域,可以通过其名称访问该变量。变量的范围仅与其生命周期松散连接,这就是您所要求的。变量的生命周期可能比程序控制在其范围内的时间段更长或更短!

另外,完全不清楚你的意思是“枚举变量是否会被垃圾收集?”变量是存储位置,因此变量必须 某处。 变量在哪里?它是一个阶级的领域吗?它是一个局部变量吗?它是lambda的封闭外变量吗?它是枚举类型数组的元素吗?所有这些都会影响与变量关联的存储是否被收集,以及收集时是否收集。

你提问的方式并没有任何意义。你能澄清这个问题吗?

您可能还想阅读我对这个相关问题的回答:

Do value types get Garbage collected?

答案 1 :(得分:2)

枚举是一个值类型变量,因此当它超出范围时会自动释放

答案 2 :(得分:0)

C#中的枚举是一种值类型,因此将遵循值类型的垃圾收集规则,这些规则根据该类型的声明范围推迟。你可以在互联网上找到很多信息。以下是GC视角下的参考和值类型比较的示例链接。

http://www.albahari.com/valuevsreftypes.aspx