C#:结构成员是否更具性能?

时间:2009-12-01 20:57:39

标签: c# performance class struct

blog entry, Luca Bolognese上考虑结构与类作为成员字段的想法:

  

使用结构的原因不是   在上分配一个额外的对象   堆。这允许这个解决方案   简单地编码就像'高性能'一样   类本身的字段。或   至少我是这么认为的......

这有多准确?

首先,他不是指在上分配一个额外的对象?

并且,不会使用结构稍微减少分配时间(特别是如果类成员是延迟加载的),代价是增加内存占用量?

在某些情况下,你会推荐这种针对类的结构吗?

1 个答案:

答案 0 :(得分:4)

我认为他的意思是写堆,他只是错误地写了堆栈。

结构或类的问题经常出现。这是一个example。我认为最好遵循这个常见的建议:


MSDN的答案是:Choosing Between Classes and Structures

基本上,该页面为您提供了一个4项清单,并说除非您的类型符合所有标准,否则使用课程。

除非类型具有以下所有特征,否则不要定义结构:

* It logically represents a single value, similar to primitive types (integer, double, and so on).
* It has an instance size smaller than 16 bytes.
* It is immutable.
* It will not have to be boxed frequently.

有时候你不应该遵循这个建议吗?也许,但只有在你通过剖析证明它之后。