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

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

但如果我有这门课

public class Dummy{ private int; } 

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

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

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

在结构上使用“new”是否在堆或堆栈上分配它?

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

实际上,课程没有你可以依赖的真正“大小”。 最重要的是,这不应该是使用类或结构的决定因素(但是你倾向于找到指导说明大约16字节或以下的类型可以是合适的结构,并且上面倾向于类)。 对我来说,决定因素是预期用途。

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

类是引用类型,位于堆中(将从garbabe收集器中删除)。 struct ist值类型并存储在堆栈中。
在您的示例的情况下,Microsoft建议使用值类型(struct),因为引用类型会导致过多的开销。

如果您对此主题感兴趣,请查看Jeffrey Richter撰写的“CLR via C#”一书。