gpt4 book ai didi

c# - C# 中类与结构的 "Overhead"?

转载 作者:可可西里 更新时间:2023-11-01 07:51:25 26 4
gpt4 key购买 nike

我正在学习类(class) 3354(在 .NET Framework 2.0 中实现系统类型和接口(interface))据说对于具有成员变量和函数的简单类,由于开销,最好使用结构而不是类.

我从来没有听说过这样的事情,这种说法的有效性是什么?

最佳答案

我建议永远不要使用结构,除非您有一个非常具体的用例并且确切地知道结构将如何使系统受益

虽然 C# 结构允许成员,但它们的工作方式与类有很大不同(不能子类型化,没有虚拟分派(dispatch),可能完全存在于堆栈中)并且行为会根据提升而变化等(提升是将值类型提升到堆的过程——惊喜!)

因此,回答这个问题:我认为 C# 中最大的误称之一是使用结构“为了性能”。这样做的原因是,如果不了解它如何与系统的其余部分交互以及它所扮演的角色(如果有的话),就无法真正衡量“开销”。这需要分析,不能用“减少开销”这样微不足道的陈述来概括。

结构值类型有一些好的案例——一个例子是存储在图像数组中的复合 RGB 值。这是因为 RGB 类型很小,图像中可以非常,值类型可以很好地打包在数组中,并且可能有助于保持更好的内存局部性等。

关于c# - C# 中类与结构的 "Overhead"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2761742/

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