4

我正在尝试编写一个接受 2 个参数的除法方法。

public static decimal Divide(decimal divisor, decimal dividend)
{
    return dividend / divisor;
}

现在,如果除数为 0,我们得到不能除以零的错误,这没关系。

我想做的是检查除数是否为0,如果是,将其转换为1。有没有办法在我的方法中没有很多if语句的情况下做到这一点?我认为很多 if() 会造成混乱。我知道数学上不应该这样做,但我有其他功能。

例如:

if(divisor == 0)
{
    divisor = 1;
}
return dividend / divisor;

可以不做if()声明吗?

4

5 回答 5

15

您可以像这样执行条件 if 语句。这与 VB.net 中的 IIF 相同

return dividend / ((divisor == 0) ? 1 : divisor);

确保你用 () 包裹你的后半部分,否则你会得到一个除法错误。

于 2009-05-27T14:57:23.220 回答
13

通过使用?:运算符

return (divisor == 0) ? dividend : dividend / divisor 
于 2009-05-27T14:59:25.760 回答
1

这与 if 语句几乎相同,但更简洁。

return dividend / divisor == 0 ? 1 : divisor;
于 2009-05-27T14:57:05.890 回答
0

如果您真的想要,您可以创建自己的类型并重载 / 运算符以获得所需的行为。实现隐式转换运算符以避免强制转换或类型转换。

但是,我认为这不是一个好主意,因为它会增加一些运行时开销;唯一的好处是你得到一些(可以说)看起来更干净的代码。

于 2009-05-27T15:02:03.290 回答
0

你可以比较decimal.Zero喜欢somDecimalVar == decimal.Zero

于 2020-04-29T10:12:45.837 回答