簡體   English   中英

C#的操作是否類似於JavaScript的|| 二傳手?

[英]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的||沒有相同的含義 ,它也將空字符串視為錯誤。

是的,使用??:

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

查看Msdn以獲取更多信息: ?? 操作者

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM