静态类分配

5
在C#中,静态类是堆栈分配的吗?
由于它们无法实例化,我猜这就是它的实现方式。

如果/由于它们没有实例化,那么它们的任何实例都不会被分配。 - ChrisW
2
为什么要在临时存储区上分配一个“非临时”的东西?栈,也就是临时存储区,是用来分配那些“消失”的东西的。但静态类永远不会消失。 - Eric Lippert
@ChrisW:那么静态类中的静态字段存在哪里? - Eric Lippert
2个回答

10

它们存储在堆的区域内,称为高频堆。您可以在此CodeProject文章中找到更多详细信息。 静态关键字揭秘


5

我理解的是静态类是在堆上分配的(使用静态构造函数,在类型初始化时进行分配)。

如果它们在栈上,那么如果有很多静态类存在,你很快就会耗尽栈空间。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接