假设我有一个带有9属性的结构,它返回一个值类型作为其结果,而在该结构中,我也有一个返回引用类型的属性:IEnumerable:
public IEnumerable<KeyValuePair<String, String>> Dostuff
{
get
{
//doing some operations in here
return _valueToReturn;
}
}使用IEnumerable将需要堆空间,但实际上结构是基于堆栈的,那么在我的情况下该怎么办呢?
顺便说一句,结构是不可变的。
发布于 2016-04-14 10:54:22
有一个页面展示了如何在struct和class之间进行选择。
据我所知,如果结构中所有字段的总大小()小于16个字节,则将其保持为struct比将其更改为类更好。属性的数量并不重要。
发布于 2016-04-14 11:09:00
在您的示例中,将类型声明为class。
如果您不知道,或者不确定,请将类型定义为class。
如果该类型是原语类型的小聚合,那么struct可能提供更好的性能。但是,除非您确实使用了class,否则好处要比风险小。
那么,你怎么能确定,试着用有代表性的数据来衡量性能,在典型的硬件上,在发布模式下编译等等。如果你真的关心性能,你无论如何都得这么做。
如果您不想这样做,请使用class。
https://stackoverflow.com/questions/36620781
复制相似问题