加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 拳击记忆问题

发布时间:2020-12-16 01:43:51 所属栏目:百科 来源:网络整理
导读: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中进行计算密集的工作,它可能应该是一种方法.)泛型减轻了拳击的问题,但仍然允许你很大程度的返回什么类型的灵活性(类似于返回类型对象).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读