c# – 拳击记忆问题

c# – 拳击记忆问题,第1张

概述private double _value;public object Value{ get { return _value; }} 嗨,大家好只是进行代码审查,并在我们的代码库中注意到了它不是一个错字,但我关注的是调用getter时涉及的拳击,并且假设这个代码是一个生成数百次的类型,并且频繁调用getter我可以看到内存问题. 我的担忧是否与记忆
private double _value;public object Value{    get   {         return _value;   }}

嗨,大家好只是进行代码审查,并在我们的代码库中注意到了它不是一个错字,但我关注的是调用getter时涉及的拳击,并且假设这个代码是一个生成数百次的类型,并且频繁调用getter我可以看到内存问题.

我的担忧是否与记忆有关?我的意思是,由于拳击,我们加倍了吗?

解决方法 是的,您展示的代码片段确实会导致拳击.您正在强制运行时将double转换为对象.如果您想向自己或同事证明,请检查已编译的IL以获取告示框和取消框说明.

然而,尽管你在尽可能避免拳击时是正确的,但实际的性能损失并不总是像宣传那样重要.在对代码库进行重大更改之前,请花一些时间进行性能分析,以确保您花费时间的代码确实是性能瓶颈.

鉴于上面的具体示例,为什么您需要首先返回类型对象,这一点并不是特别清楚.由于您只是返回私有字段的值,您可以简单地将属性更改为返回类型double.

或者,您可以将属性转换为通用方法. (属性不能是通用的,但是方法可以,如果你在getter中进行计算密集的工作,它可能应该是一种方法.)泛型减轻了拳击的问题,但仍然允许你很大程度的返回什么类型的灵活性(类似于返回类型对象).

总结

以上是内存溢出为你收集整理的c# – 拳击记忆问题全部内容,希望文章能够帮你解决c# – 拳击记忆问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1216875.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存