通常,所有引用类型在没有引用时都是垃圾回收。枚举变量怎么样?它是否会被垃圾收集,即使它超出范围(意味着它没有被引用更多)?
答案 0 :(得分:6)
你的问题写得很混乱。
通常,所有引用类型在没有引用时都是垃圾回收。
未收集参考类型。收集了实例的引用类型。当实例没有引用时,它们不会被收集。它们在垃圾收集器运行时收集,并确定无法从已知的生存根访问引用的对象。
枚举变量怎么样?它是否会被垃圾收集,即使它超出范围(意味着它没有被引用更多)?
变量的范围是程序文本的区域,可以通过其名称访问该变量。变量的范围仅与其生命周期松散连接,这就是您所要求的。变量的生命周期可能比程序控制在其范围内的时间段更长或更短!
另外,完全不清楚你的意思是“枚举变量是否会被垃圾收集?”变量是存储位置,因此变量必须 某处。 变量在哪里?它是一个阶级的领域吗?它是一个局部变量吗?它是lambda的封闭外变量吗?它是枚举类型数组的元素吗?所有这些都会影响与变量关联的存储是否被收集,以及收集时是否收集。
你提问的方式并没有任何意义。你能澄清这个问题吗?
您可能还想阅读我对这个相关问题的回答:
答案 1 :(得分:2)
枚举是一个值类型变量,因此当它超出范围时会自动释放。
答案 2 :(得分:0)
C#中的枚举是一种值类型,因此将遵循值类型的垃圾收集规则,这些规则根据该类型的声明范围推迟。你可以在互联网上找到很多信息。以下是GC视角下的参考和值类型比较的示例链接。