C# 静态和只读成员的内存布局

C# 静态和只读成员的内存布局,c#,memory-management,C#,Memory Management,在.Net中,const和static readonly在内存分配方面是否属于包含类?它们是否按实例分配(即使它们属于类型本身) 编辑: 如何处理序列化和sizeof操作?静态类的成员属于类型,而不是实例。类型本身被加载到加载器堆,特别是在加载类型后的高频堆中。因此,对于您的问题:不,它们不是按类的每个实例分配的静态类的成员属于类型,而不是实例。类型本身被加载到加载器堆,特别是在加载类型后的高频堆中。因此,对于您的问题:不,它们不会分配给类的每个实例静态字段的内存,无论是否为常量,都不会分配给每

在.Net中,const和static readonly在内存分配方面是否属于包含类?它们是否按实例分配(即使它们属于类型本身)

编辑:
如何处理序列化和sizeof操作?

静态
类的成员属于
类型
,而不是实例。
类型
本身被加载到
加载器堆
,特别是在加载类型后的
高频堆
中。因此,对于您的问题:不,它们不是按
的每个实例分配的
静态
类的成员属于
类型
,而不是实例。
类型
本身被加载到
加载器堆
,特别是在加载类型后的
高频堆
中。因此,对于您的问题:不,它们不会分配给
类的每个实例

静态
字段的内存,无论是否为常量,都不会分配给每个实例。此外,
static const
-
const
自动被视为每个类一个


常量
静态只读
字段之间存在,但它们都不会更改相应类实例的占用空间。

对于
静态
字段的内存,无论是否为常量,都不会分配给每个实例。此外,
static const
-
const
自动被视为每个类一个


const
static readonly
字段之间存在,但它们都不会更改相应类实例的占用空间。

静态变量存储在加载程序堆中,其中类型信息存储为加载的类型。
这意味着在加载静态变量的类型之前,不会分配静态变量的存储。

静态变量存储在加载程序堆中,其中类型信息存储为加载的类型。
这意味着在加载静态变量的类型之前,不会分配静态变量的存储。

加载类型时,静态成员的内存分配一次,因为它属于类型本身


至于
const
它不会消耗内存,它们在运行时根本不存在,它们被烧成IL。换句话说,它们是硬编码的。

在加载类型时,静态
成员的内存分配一次,因为它属于类型本身

至于
const
它不会消耗内存,它们在运行时根本不存在,它们被烧成IL。换句话说,它们是硬编码的。

可能重复的可能重复的