当我遇到以前从未见过的东西时,我正试图将Javascript函数转换为C#:
return (a / (b - (c * G * (d || 0)))) || 0;
C#抱怨d || 0
部分被应用于浮点数,我不知道Javascript运算符是做什么的。 (在C#中,这是一个逻辑OR)
编辑:所有变量都是浮点数。
答案 0 :(得分:2)
如果表达式是真实的,||
运算符返回左侧的表达式,否则返回右侧的表达式。它通常用于指定默认值/回退值,例如,当预期数字但提供的变量可能包含undefined
或null
时。当可选参数可以传递给函数并且函数想要简单地使用第一个真正的参数时,它也常用。
答案 1 :(得分:1)
||
是"短路" OR运算符,为了使它工作,两个操作数必须首先被评估为布尔值。从左到右,返回可转换为true
的第一个表达式的值(原始值,而不是转换后的布尔值)。
JavaScript将执行隐式转换以确定"真实性"如果需要,每个操作数,但C#不会。 C#中的float对此运算符无效,因为C#是一种强类型语言,并且不会发生隐式转换。您必须将浮动显式转换为布尔值才能在C#中使用此运算符。
在C#中,您需要:
((bool) d || 0)
答案 2 :(得分:0)
||当两个操作数都是布尔值时,(OR)运算符工作。如果没有,那么JavaScript会尝试隐式转换它并执行OR操作。
您需要在C#中显式转换。