gpt4 book ai didi

.net - .NET 业务层中的结构与类

转载 作者:行者123 更新时间:2023-12-04 09:56:55 25 4
gpt4 key购买 nike

我现在被困在一个“高级”的 ASP.NET 类(class)中,我的导师只是提出了一个我不确定的意见。 (我说“高级”是因为他仍在使用 HTML 表格进行页面布局,而我们刚刚谈到了母版页令人难以置信的高级主题。我需要眼部漂白剂!)

他指出,与其说创建一个包含所有适用数据和方法的 Person 类,不如创建一个 Person 结构体和一个 Person 类。该结构包含通常是 Person 类的属性,而该类仅包含方法。由于 Person 结构位于堆栈上,一旦您的方法或任何东西从堆栈中弹出,与您的人相关联的数据就会消失,而不是像对象一样在堆上进行垃圾收集。

这应该是为了节省内存并使垃圾收集过程更快。

问题是:这会产生多大的影响,它真的值得吗?

最佳答案

老实说,我不相信您会从这样做中看到很多性能优势。结构很难写好,写得不好的结构比给垃圾收集器征税要危险得多。

听起来您的教授提倡使用 data transfer objects这将鼓励状态和行为的分离。如果做得好,这可能是一个很好的设计(并且在大多数情况下,您将使用类而不是结构来实现此模式)。

我说使用结构体可能更危险的原因是 CLR 对值类型的处理方式有很大不同,如果写得不好(例如可变结构体)会造成可怕的麻烦。此外,如果您的类型包含许多字段,然后从一个方法传递到另一个方法,那么您将在每个方法调用中复制每个字段的值,因此比最初使用类时使用更多的内存。

关于.net - .NET 业务层中的结构与类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1045304/

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