我正在尝试编写一个分区方法,它接受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()
声明的情况下完成吗?
答案 0 :(得分:15)
您可以像这样执行条件if语句。这与VB.net中的IIF相同
return dividend / ((divisor == 0) ? 1 : divisor);
确保用()包裹你的下半部分,否则你会得到一个除法错误。
答案 1 :(得分:12)
使用?:
运算符
return (divisor == 0) ? dividend : dividend / divisor
答案 2 :(得分:2)
这与if语句几乎相同,但它更清晰。
return dividend / divisor == 0 ? 1 : divisor;
答案 3 :(得分:0)
如果你真的想要,你可以创建自己的类型并重载/运算符以获得所需的行为。实现隐式转换运算符以避免转换或类型转换。
但是,我认为这不是一个好主意,因为它会增加一些运行时开销;唯一的好处是你得到了一些代码(可以说)看起来更清洁。答案 4 :(得分:0)
您可以像decimal.Zero
那样与somDecimalVar == decimal.Zero
进行比较