我们在 SO 中看到了很多关于 c# 中的类与结构的讨论。大多以结论说它是一个结束堆/栈内存分配。并建议在中使用结构小数据结构.
现在我面临着在这两个选择中决定简单数据存储的情况。目前,在我们的应用程序中,我们有数千个类,仅充当简单的数据存储(仅公开公共字段),并且它们在不同的模块和服务之间传递。
根据我的理解,出于性能原因,我觉得最好继续使用结构而不是类。因为这些都是简单的数据结构,仅充当数据存储的作用。
在继续之前,我需要经历过这场斗争的人提供一些专家建议。
- 我的理解正确吗?
- 我见过大多数 ORM 都有类作为数据存储。所以我怀疑是否应该有理由继续使用类而不是结构。那会是什么?
我会根据以下标准做出选择
- 引用类型与值类型语义。如果两个对象只有在同一个对象时才相等,则表明引用类型语义 => 类。如果其成员的值定义相等(例如,如果两个 DateTimes 都表示相同的时间点,即使它们是 2 个不同的对象,则它们是相等的),则值类型语义 => struct
- 对象的内存占用。如果对象很大并且经常分配,使其成为结构会更快地消耗堆栈,因此我宁愿将其作为一个类。相反,我宁愿避免小值类型的 GC 惩罚;因此使它们成为一个结构。
- 你能让对象不可变吗?我发现结构非常适合“值对象”——来自 DDD 书。
- 你会因为这个对象的使用而面临一些装箱-拆箱惩罚吗?如果是,那就去上课吧。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)