【发布时间】:2019-02-02 02:18:43
【问题描述】:
为什么在 C# 中 POCO 对象是使用类而不是结构创建的,而 POCO 旨在仅携带公共属性而不携带任何行为?
我们真的需要创建一个带有 get 和 set 访问器的类吗?我认为结构体可以更简洁地携带对象的状态。
【问题讨论】:
-
您可能还想阅读stackoverflow.com/questions/441309/why-are-mutable-structs-evil(它解释了与“结构会更干净”声明相反的观点)
-
简单的答案是,在 .NET 中,strutcs 是值类型。它们在堆栈上是高性能的,但是当您尝试将它们用作数据持有者并将它们从一个上下文传递到另一个上下文或从一个类中引用它们时,需要装箱才能将它们移动到堆上。装箱效率低,因此首选类,因为它们位于堆上并且不受装箱的影响。