Myt*_*ics 9 c# math if-statement sign
可能是一个愚蠢的问题,但有没有理由使用Math.Sign?
使用Math.Sign而不仅仅使用if语句是否存在速度/优化问题?也许只是最佳实践/代码可读性偏好?
if (rayDirX < 0)
stepX = -1;
else
stepX = 1;
//----------
stepX = (rayDirX < 0) ? (-1) : (1);
//----------
stepX = Math.Sign(rayDirX);
Run Code Online (Sandbox Code Playgroud)
我怀疑是否存在功能差异或性能差异(如果有的话),但 Math.Sign 版本更加明显直接。特别是在您的示例中,未声明 rayDirX 的类型。但这非常微妙,我不会批评你使用其中任何一个。
编辑:
另一件事是,上面的示例有一个小错误。在 Math.Sign 的情况下0将返回0。以下是 Math.Sign 框架之外的反编译代码:
public static int Sign(int value)
{
if (value < 0)
{
return -1;
}
if (value > 0)
{
return 1;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3100 次 |
| 最近记录: |