gpt4 book ai didi

c# - 哪个最适合数据存储结构/类?

转载 作者:IT王子 更新时间:2023-10-29 04:13:26 26 4
gpt4 key购买 nike

我们已经在 SO 中看到很多关于 C# 中的类与结构的讨论。大部分以结论说它是一个堆/栈内存分配结束。并建议在小型数据结构中使用结构。

现在我有一个情况可以在这两个选项中决定简单的数据存储。目前在我们的应用程序中,我们有数千个类,只是充当简单的数据存储(仅公开的公共(public)字段),它们在不同的模块和服务之间传递。

根据我的理解,出于性能原因,我觉得最好继续使用结构而不是类。因为这些是简单的数据结构,仅充当数据存储。

在继续之前,我需要一些经历过这场斗争的人的专家建议。

  • 我的理解正确吗?
  • 我看到大多数 ORM 都有类作为数据存储。所以我怀疑应该有理由继续使用类而不是结构。那会是什么?

最佳答案

我会根据以下标准做出选择

  • 引用类型与值类型语义。如果 2 个对象只有当它们是同一个对象时才相等,则表示引用类型语义 => 类。如果其成员的值定义了相等性(例如,如果两个 DateTime 表示相同的时间点,即使它们是 2 个不同的对象,则 2 个 DateTime 是相等的),值类型语义 => struct
  • 对象的内存占用。如果对象很大并且经常分配,将其设为结构会更快地消耗堆栈,因此我宁愿将它作为一个类。相反,我宁愿避免对小值类型的 GC 惩罚;因此使它们成为一个结构。
  • 你能让这个对象不可变吗?我发现结构非常适合“值(value)对象”——来自 DDD 一书。
  • 您是否会根据此对象的使用情况面临一些装箱-拆箱惩罚?如果是,就去上课。

关于c# - 哪个最适合数据存储结构/类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1951186/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com