该stll应该是一个结构还是更好的类(9个值类型属性和1个引用值)

时间:2016-04-14 10:46:16

标签: c# stack heap

想象一下,我有一个 9个属性的结构,它返回一个值类型作为结果,在该结构中我还有一个返回引用类型的属性:IEnumerable就像这样:

public IEnumerable<KeyValuePair<String, String>> Dostuff
        {
            get
            {
                //doing some operations in here
                return _valueToReturn;
            }
        }

使用IEnumerable将需要堆空间,但实际上结构基于堆栈,那么在我的情况下该怎么办?

顺便说一下,struct是不可变的。

2 个答案:

答案 0 :(得分:0)

有一个page,展示如何在结构和类之间进行选择。

据我所知,如果struct中所有字段的总大小小于16字节,则将其保留为struct比将其更改为class更好。属性的数量并不重要。

答案 1 :(得分:0)

在您的情况下,将类型声明为class

如果您不知道或不确定,请将类型定义为class

如果类型是原始类型的小聚合,则struct可能提供更好的性能。但是,除非您确定使用class

,否则收益会小于风险

那么,您如何确定,尝试并使用代表性数据,代表性硬件,以发布模式等编译等来衡量性能。如果您真的关心性能,那么无论如何您都必须这样做

如果您不想这样做,请使用class