MSDN说,一个16字节或更少的类将更好地作为结构[引用]处理.
这是为什么?
这是否意味着如果一个结构超过16个字节,它的效率低于一个类或它是否相同?
你如何确定你的班级是否在16字节以下?
是什么限制了结构体像一个类一样?(除了禁止无参数构造函数)
这个问题有几个不同的答案,它有点主观,但我能想到的一些原因是:
结构是值类型,类是引用类型.如果您使用16个字节进行总存储,那么为每个字节创建内存引用(4到8个字节)可能是不值得的.
当你有非常小的对象时,它们通常可以被推到IL堆栈上,而不是对象的引用.这可以真正加速一些代码,因为你正在消除被调用方的内存取消引用.
IL中的类有一些额外的"绒毛",如果你的数据结构非常小,那么无论如何都不会使用这些漏洞,所以它只是你不需要的额外垃圾.
但是,结构和类之间最重要的区别是结构是值类型而类是引用类型.