C#的操作是否类似于JavaScript的|| 二传手?

elu*_*id8 2 javascript c# language-features null-check

C#是否与JavaScript的||具有类似的操作 设定装置?

例如,在JavaScript中,如果我想检查值是否为null并设置默认值,我可以这样做:

function foo(val){
    this.name = val || "foo";
}
Run Code Online (Sandbox Code Playgroud)

但是,当我想在C#中使用此功能时,我必须走这条路:

public Foo(string val)
{
    this.name = (string.IsNullOrEmpty(val) ? "foo" : val);
}
Run Code Online (Sandbox Code Playgroud)

我知道这很小,乞丐不能选择,但是,如果可能的话,我想避免得到任何涉及疯狂黑客或扩展方法的答案.我使用三元运算符很好,但我很好奇是否有一个我错过的语言功能.

更新:

各地都有很好的答案,但是J0HN和安东在头上打了一针.在上面的示例中,C#不像JavaScript那样执行"虚假"值,因此??运算符不会考虑空字符串.

感谢您的时间和精彩的回复!

Ant*_*lev 7

C#中有一个null-coalescing运算符,但它无法处理JavaScript的所有怪癖:

this.name = val ?? "foo";
Run Code Online (Sandbox Code Playgroud)

由于空字符串是false在JavaScript中,因此这个C#代码的行为与JS对应的代码不同.

  • 值得一提的是,如果val是空字符串,则OP将无法实现所需的结果. (6认同)