Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#是否具有类似于JavaScript的操作';塞特?_C#_Javascript_Language Features_Null Check - Fatal编程技术网

C#是否具有类似于JavaScript的操作';塞特?

C#是否具有类似于JavaScript的操作';塞特?,c#,javascript,language-features,null-check,C#,Javascript,Language Features,Null Check,C#是否具有与JavaScript的| | setter类似的操作 例如,在JavaScript中,如果我想检查值是否为null并设置默认值,我可以执行以下操作: function foo(val){ this.name = val || "foo"; } 但是,当我想在C#中实现这一功能时,我必须走这条路: public Foo(string val) { this.name = (string.IsNullOrEmpty(val) ? "foo" : val); } 我知

C#是否具有与JavaScript的| | setter类似的操作

例如,在JavaScript中,如果我想检查值是否为null并设置默认值,我可以执行以下操作:

function foo(val){
    this.name = val || "foo";
}
但是,当我想在C#中实现这一功能时,我必须走这条路:

public Foo(string val)
{
    this.name = (string.IsNullOrEmpty(val) ? "foo" : val);
}
我知道这很小,乞丐不能挑三拣四,但如果可能的话,我想避免得到任何涉及疯狂黑客或扩展方法的答案。我可以使用三元运算符,但我只是想知道是否有我错过的语言功能

更新:

所有答案都很好,但J0HN和Anton击中了它的头部。C#不像上面示例中的JavaScript那样执行“falsy”值,因此
操作符不考虑空字符串


感谢您的时间和巨大的反应

您可以使用
??

private int Foo(string val){
    this.name = val ?? "foo";
}
C#中有一个特殊的功能,尽管它不能处理JavaScript的所有古怪之处:

this.name = val ?? "foo";
由于JavaScript中的空字符串是
false
,因此此C#代码的行为将与其JS对应的代码不同。

遵循此规则

this.name = val ?? "foo";
是的,使用??:

    private int Foo(string val){
        this.name = val ?? "foo";
    }

查看Msdn以了解更多信息:

有一个
??
操作符,该操作符本质上与SQL中的
COALESCE
操作符相同:

int? a = null; //int? - nullable int
int q = a??1; // q is set to one;

但是,
??
不检查字符串是否为空,因此它与javascript的
|
的含义不同,后者也将空字符串视为假字符串。

这与
Foo
不同。值得一提的是,如果val是空字符串,OP将无法达到预期的效果。我必须回答您的问题,“J0HN,因为您提到它不会评估像JavaScript这样的“FLYSE”值。”无论如何,您应该考虑如何处理空字符串。我最近遇到了一个使用
str导致的错误=空
其中
!String.IsNullOrEmpty(str)
应为空。