首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将函数调用转换为常量

将函数调用转换为常量
EN

Stack Overflow用户
提问于 2019-03-15 02:41:47
回答 1查看 48关注 0票数 -1

为了实现a循环,我们使用函数WhatIsA()计算了一个变量for。WhatIsA的值在编译时是已知的,有没有什么我可以做的(也许是一个属性?),让编译器知道它可以擦除变量并将常量放在它所有引用的位置?

代码语言:javascript
复制
for (int i = 0; i < 1343434; i++)
{
    int a = WhatIsA(); //retval of WhatIsA does not change after compilation, ever.
    DoSomethingWithVariableA(a);
    DooooSomethingWithVariableA(a);
    DoooooooSomethingWithVariableA(a);
}

最初的问题来自Unity的环境。

代码语言:javascript
复制
private void Update()
{
    LayerMask mask = LayerMask.GetMask("Terrarin");
    CollidesBottom = Raycast((Vector2)transform.position + colliderBottomLeftOffset, Vector2.right, colliderWidth, mask);
    CollidesTop = Raycast((Vector2)transform.position + colliderTopRightOffset, Vector2.left, colliderWidth, mask);
    CollidesRight = Raycast((Vector2)transform.position + colliderTopRightOffset, Vector2.down, colliderHeight, mask);
    CollidesLeft = Raycast((Vector2)transform.position + colliderBottomLeftOffset, Vector2.up, colliderHeight, mask);
}

GetMask是众所周知的编译时,或者至少应该是编译时。编译器可能优化它,也可能不优化它。我自己唯一能做的事情可能是,将mask提升为一个字段变量,并在Start函数中计算它,但是它的作用域比它需要的范围更大。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55169880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档