Csharp/C#教程:C#,struct vs class,更快?分享


C#,struct vs class,更快?

可能重复:
哪个最适合数据存储结构/类?

考虑一个示例,其中我有一个Employee对象,其中包含年龄,姓名,性别,职称,薪水等属性。 我现在有一个列表,我想填充一堆Employees(每个Employee实例是唯一的)。

就速度和内存占用而言,将员工创建为Struct还是Class更为可取?

关于上述场景中Struct和Class的任何其他警告都是受欢迎的

结构仅用于应具有类似行为的相对较小的结构。

除非类型具有以下所有特征,否则不要定义结构

你的类型打破了前两个准则,也可能是第三个。 所以你一定要在这里上课。

它并不那么简单 – 您需要描述行为 。 例如, struct会在您喜欢的时候自行复制,因此在某些方面它们可以消耗更多内存。 但是,作为原始数据转储的结构数组可以避免(非常小的)对象标题(以及额外的取消引用),因此可以提高效率。

然而,更大的问题在于你如何将它们概念化; 员工不是价值 ; 如果我分配:

 var emp = GetEmployee(); var tmp = emp; 

这是否意味着我现在应该有2名员工? 它可能没有。 现在如果我改变了:

 tmp.Name = "Fred"; 

这是否影响emp取决于它是结构还是类。 我打赌它应该在这里上课。 我还建议结构应该几乎总是不可变的,以避免这种类型的数据丢失情况。 有可变结构的情况,但它经常被错误地使用,我不想意外地鼓励你这样做。

结构封装会产生其他问题; 考虑一名员工有经理; 这可能吗?

 [struct|class] Manager { private Manager boss; } 

这只适用于一堂课。 再次; 结构不太适合这种用法。 也不是多态,抽象等

这取决于,在这种情况下,一个类可能会好。 希望以下几点可以帮助您做出决定。

在以下条件下使用结构是合乎需要的。

当你有小数据结构

数据结构不需要扩展function。

当您想要对数据结构执行更快的操作时。 (由于结构存储在堆栈上,因此对其执行的操作更快。)

在以下条件下使用类是可取的。

当您有复杂的数据结构时

数据结构需要扩展function。

当您想优化内存使用时。 (当类存储在堆上时,当没有指向对象的引用时,它们将被垃圾收集。)

请查看此处了解更多详情。

上述就是C#学习教程:C#,struct vs class,更快?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/942503.html

(0)
上一篇 2021年11月13日
下一篇 2021年11月13日

精彩推荐