[英]Does C# Have An Operation Similar to JavaScript's || Setter?
C#是否與JavaScript的||具有類似的操作 設定裝置?
例如,在JavaScript中,如果我想檢查值是否為null並設置默認值,我可以這樣做:
function foo(val){
this.name = val || "foo";
}
但是,當我想在C#中使用此功能時,我必須走這條路:
public Foo(string val)
{
this.name = (string.IsNullOrEmpty(val) ? "foo" : val);
}
我知道這很小,乞丐不能選擇,但是,如果可能的話,我想避免得到任何涉及瘋狂黑客或擴展方法的答案。 我使用三元運算符很好,但我很好奇是否有一個我錯過的語言功能。
更新:
各地都有很好的答案,但是J0HN和安東在頭上打了一針。 C#沒有像上面的例子中的JavaScript那樣做“虛假”的值,所以??
運算符不考慮空字符串。
感謝您的時間和精彩的回復!
C#中有一個null-coalescing運算符 ,但它無法處理JavaScript的所有怪癖:
this.name = val ?? "foo";
由於JavaScript中的空字符串為false
,因此此C#代碼的行為與JS對應的代碼不同。
你可以用??
:
private int Foo(string val){
this.name = val ?? "foo";
}
跟着這個吧
this.name = val ?? "foo";
有一個??
運算符基本上與SQL中的COALESCE
運算符相同:
int? a = null; //int? - nullable int
int q = a??1; // q is set to one;
但是, ??
不檢查字符串的空白,因此它與javascript的||
沒有相同的含義 ,它也將空字符串視為錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.