【发布时间】:2014-07-15 05:13:29
【问题描述】:
在.Net 中,关于内存分配,const 和 static readonly 是包含类的一部分吗?它们是按实例分配的(即使它们属于类型本身)?
编辑: 这如何与 Serializion 和 sizeof 操作一起使用?
【问题讨论】:
标签: c# memory-management
在.Net 中,关于内存分配,const 和 static readonly 是包含类的一部分吗?它们是按实例分配的(即使它们属于类型本身)?
编辑: 这如何与 Serializion 和 sizeof 操作一起使用?
【问题讨论】:
标签: c# memory-management
static 字段的内存,无论是否为常量,都不会为每个实例分配内存。此外,static const is not allowed - const 自动被视为一个类。
const 和static readonly 字段之间有differences,但它们都没有改变相应类的实例的足迹。
【讨论】:
static 成员的内存在加载类型时分配一次,因为它属于类型本身。
至于const它不会消耗内存,它们在运行时根本不存在,它们被烧成IL。换句话说,它们是硬编码的。
【讨论】:
static 类的成员属于Type,而不是实例。 Type 本身被加载到 Loader Heaps 中,特别是在加载类型后在 HighFrequencyHeap 中。所以对于您的问题:不,它们不是按Class 的实例分配的。
【讨论】:
静态变量存储在加载器堆中,在加载类型时存储类型信息。 这意味着静态变量的存储在加载它们的类型之前不会被分配。
【讨论】: