想象一下,我有一个 9个属性的结构,它返回一个值类型作为结果,在该结构中我还有一个返回引用类型的属性:IEnumerable
就像这样:
public IEnumerable<KeyValuePair<String, String>> Dostuff
{
get
{
//doing some operations in here
return _valueToReturn;
}
}
使用IEnumerable
将需要堆空间,但实际上结构基于堆栈,那么在我的情况下该怎么办?
顺便说一下,struct是不可变的。
答案 0 :(得分:0)
有一个page,展示如何在结构和类之间进行选择。
据我所知,如果struct中所有字段的总大小小于16字节,则将其保留为struct比将其更改为class更好。属性的数量并不重要。
答案 1 :(得分:0)
在您的情况下,将类型声明为class
。
如果您不知道或不确定,请将类型定义为class
。
如果类型是原始类型的小聚合,则struct
可能提供更好的性能。但是,除非您确定使用class
。
那么,您如何确定,尝试并使用代表性数据,代表性硬件,以发布模式等编译等来衡量性能。如果您真的关心性能,那么无论如何您都必须这样做
如果您不想这样做,请使用class
。