【发布时间】:2011-04-09 07:11:15
【问题描述】:
由于 C# 中的枚举在堆栈上,我想知道枚举在 Java 中的创建位置。在堆栈上?在堆上?在另一个神秘的地方?
C# 中的枚举比 Java 中的更原始,这或许可以解释为什么它们是在堆栈上创建的...
他们在哪里?我找不到他们!
谢谢
【问题讨论】:
-
C# 中的枚举可以在堆栈上,但它们也可以在堆上。这一切都取决于它们的使用位置(字段/参数/局部变量)。虽然它们是值类型,但也许这就是混乱的来源?此外,在 .NET 中,变量内容的存储位置无关紧要。这只是一个实现细节(可能会在 CLR 的不同实现中发生变化)。
-
出于好奇,您为什么想知道它们是在堆栈上还是在堆上?
-
@whaley 简单的好奇心
-
它们在堆上,这只是 Java 在性能方面如此糟糕的另一个原因。
标签: java c# enums heap-memory stack-memory