创建新类或结构时.NET中的内存使用情况

Sim*_*röm 14 .net c# memory

Int的大小为4个字节,如果我在程序中创建一个新的Int将使其内存消耗增加4个字节.对?

但如果我有这门课

public class Dummy{
    private int;
}
Run Code Online (Sandbox Code Playgroud)

我的新课程将使用多少内存?如果它是一个结构,内存消耗会更低吗?我认为引用本身也会消耗一些内存.

Ada*_*rth 15

单个参考要么发生在32位进程4个字节或64位处理8个字节.引用是类的标准开销(因为它们是引用类型).结构不会引起参考(好吧,忽略任何潜在的拳击)并且通常是其内容的大小.我不记得班级是否有更多的开销,不这么认为.

这个问题深入研究了类与结构(也在问题评论中提供):

在结构上使用"new"在堆或堆栈上分配它吗?

如注释中所述,只有类的实例才会消耗此引用开销,并且只有在某处有引用时才会消耗此引用开销.当没有引用时,该项目符合GC的条件 - 我不确定在没有任何引用的情况下类的大小是什么,我认为它是其内容的大小.

实际上,课程没有你可以依赖的真正"大小".而最重要的这不是真的应该使用类或结构的决定因素(但你往往会发现指引指出类型或低于大约16个字节可以适合结构,以上对类趋于).对我来说,决定因素是预期用途.

在谈论结构时,我觉得有必要提供以下链接:为什么可变结构"邪恶"?