gpt4 book ai didi

C#(如果 < 或如果 >)与 Math.Sign

转载 作者:太空狗 更新时间:2023-10-29 17:46:55 25 4
gpt4 key购买 nike

这可能是个愚蠢的问题,但有什么理由使用 Math.Sign 吗?

使用 Math.Sign 而不是仅使用 if 语句是否有速度/优化方面的问题?也许只是最佳实践/代码可读性偏好?

if (rayDirX < 0) 
stepX = -1;
else
stepX = 1;

//----------

stepX = (rayDirX < 0) ? (-1) : (1);

//----------

stepX = Math.Sign(rayDirX);

最佳答案

我怀疑是否存在功能差异或性能差异(如果有的话),但 Math.Sign 版本更直观一些。特别是在您未声明 Type of rayDirX 的示例中。但它非常微妙,我不会因为你使用其中任何一个而批评你。

编辑:

还有一件事,你上面的例子有一个小错误。在 0 的情况下,Math.Sign 将返回 0。下面是 Math.Sign 框架的反编译代码:

public static int Sign(int value)
{
if (value < 0)
{
return -1;
}
if (value > 0)
{
return 1;
}
return 0;
}

关于C#(如果 < 或如果 >)与 Math.Sign,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9672908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com