簡體   English   中英

C#內聯if或value語法

[英]C# inline if or value syntax

C#是否具有JavaScript if或value語法?

例如,我知道您可以在JavaScript中執行此操作:

var test = someValue || thisValue;

如果someValue是undefined,false或空字符串,則test變為thisValue 但是,除了傳統的if或inline之外,我從未在C#中看到過這樣做的方法。

NullCoalesce

var test = someValue ?? thisValue;

但是,C#並沒有做出奇怪的JavaScript假冒行為。

C#中的短路評估在評估bool時更為重要:

private bool EvaluateA()
{
    return true;
}

private bool EvaluateB()
{
    return false;
}

public static int main()
{
    Console.Write(EvaluateA() || EvaluateB()); // EvaluateB is never called
}

它被稱為null-coalescing運算符。

String someValue = null;
var thisValue = "Foo";
var test = someValue ?? thisValue;
// test will be == "Foo"

正如評論中所提到的,這不適用於空字符串,“false”等。你可以在C#中做的是寫一個擴展方法來做到這一點,如果你真的想:

public static class MyStringThing {
    public static String FixErUp(this String s1, String s2) {
        if (String.IsNullOrWhiteSpace(s1) || s1.Equals("false"))
            return s2;
        return s1;
    }
}

像這樣使用:

String someValue = "false";
var thisValue = "Foo";
var test = someValue.FixErUp(thisValue);
// test will be == "Foo"

使用??

var test = someValue ?? thisValue;

這僅在someValue為null時有效。 要檢查falsestring.Empty ,您需要使用普通的if語句。

並不是的。 但它確實有空合並。

給定引用類型,如果為null ,則可以使用值或替代null

string foo = null;
string value = foo ?? "bar"; // value == "bar"

否則對於任何其他情況(即非空,所有空格,值類型等),您將不得不進行其他形式的檢查。

string foo = "";
string value1 = foo ?? "bar"; // value1 == ""
string value2 = !String.IsNullOrEmpty(foo) ? foo : "bar"; // value1 == "bar"

暫無
暫無

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

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