c# - 重复的 if 语句常量是 "reused"吗? C# .NET

标签 c# if-statement unity-game-engine constants

这是一个简单的问题,我不敢相信我之前没有想过阅读它......但我似乎无法找到正确的搜索词来找到答案,所以请耐心等待:

如果我有 60 个不同的 if 语句,请将其分布在整个类(class)的多个方法中,如下所示:

if(myVar == 0.0f)
    yaddayadda

if(myOtherVar == 0.0f)
    yaddayadda

if(someVar == 0.0f || someOtherVar == 0.0f)
    yaddayadda

...那些 0.0f 是否在每次使用时都会被放入内存并随后进行 GC?或者它们存储在编译后的代码中?我最好定义如下内容:

const float zero = 0.0f;

...然后用它来代替?如果是这样,从 CPU 周期来看,从 const 获取值是否比直接将常量保留在 if 语句中更昂贵?

我问,因为我可以看到decimal实际上有一个decimal.Zero常量,但float和double都没有。

最佳答案

这没有任何区别。编译后的版本是相同的。

看看design guidlines :

The compiler burns the values of const fields directly into calling code. Therefore, const values can never be changed without the risk of breaking compatibility.

关于c# - 重复的 if 语句常量是 "reused"吗? C# .NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44531120/

相关文章:

c++ - vector +for+if

android - 作业失败,出现异常 : System. Reflection.TargetInitationException Unity 错误

c# - 尝试将文件名添加到字符串末尾时出错 :

c# - WCF 异常 : Text Message Encoding and ISO-8859-1 Encoding

c# - 在不部署数据库属性的情况下通过代码部署 dacpac

c# - 为单个员工分配一个十进制值 c#

Javascript 内存节省 - if 语句 var 声明

r - 如果 ggplot 中的语句导致 R 中的错​​误,二元运算符的非数字参数

c# - 统一文件生成

unity-game-engine - 在一个 Unity 项目文件夹中拥有多个不相关的项目有多可行/合理?