【发布时间】:2020-03-09 16:32:21
【问题描述】:
在 JavaScritp 中,运算符 && 可用于调用这样的函数
possibleNull && possibleNull.do()
这里只执行 possibleNull 对象的 do() 方法,可能的Null 对象不为空。这可以由 ? 处理。操作员。但是我找不到 C# 替代
let foo = _fooProvider.GetFoo();
return foo && processFoo(foo);
在 JS 的 "left && right" 表达式中,当 left 变量被评估为 "true" 时(一般不为 null -> JS 中有更多情况),返回(或执行)right 变量。
我知道 || 的 C# 替代方案工作原理几乎相同的 JS 运算符(?? 运算符)。 &&也有对应的吗?
编辑:我知道当两个操作数都是布尔值时 && 可以短路。然而,在 JS 中,你可以让右侧返回 bool 以外的其他内容。 JS 中的左侧确实会被解释器自动转换为 bool,而右侧只是被评估并返回。
我想实现类似的目标
public Foo Do(Foo arg)
...
var foo = _fooProvider.GetFoo();
return foo != null && Do(foo);
不使用 if-else 或三元运算符。
【问题讨论】:
-
&&做同样的事情,但您不能将其用作语句本身 - 需要用作if、while等的一部分。 -
只做类似
if(foo!=null) processFoo(foo);的事情有什么问题 -
@JᴀʏMᴇᴇ in C#
&&仅在双方都是bool时才有效。所以foo == null会写在左边,但是如果processFoo是一个void方法,那么你就没有办法为右边写一个bool。 -
@juharr - 非常真实,我把球丢在那里了!
标签: javascript c# null conditional-statements