C#是否具有類似JavaScript if或value語法的內容?C#內嵌if或值語法
例如,我知道你可以在JavaScript中做到這一點:
var test = someValue || thisValue;
如果someValue中是不確定的,虛假的,或空字符串,然後測試變得thisValue。然而,我從來沒有見過一種方式在C#中執行此操作,而不是傳統的if或inline if。
C#是否具有類似JavaScript if或value語法的內容?C#內嵌if或值語法
例如,我知道你可以在JavaScript中做到這一點:
var test = someValue || thisValue;
如果someValue中是不確定的,虛假的,或空字符串,然後測試變得thisValue。然而,我從來沒有見過一種方式在C#中執行此操作,而不是傳統的if或inline if。
var test = someValue ?? thisValue;
然而,C#不會做奇怪的JavaScript falsey行爲。
C#中的短路評價是evaulating的bool更相關:
private bool EvaluateA()
{
return true;
}
private bool EvaluateB()
{
return false;
}
public static int main()
{
Console.Write(EvaluateA() || EvaluateB()); // EvaluateB is never called
}
其所謂的空合併運算符。
String someValue = null;
var thisValue = "Foo";
var test = someValue ?? thisValue;
// test will be == "Foo"
正如評論所說,這並不爲空字符串工作,「假」,等等。你可以用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"
要注意 - 這隻適用於空實例,不適用於假/空字符串。 – asawyer 2012-03-01 18:37:24
使用??
var test = someValue ?? thisValue;
這僅適用於someValue
爲空的情況。要檢查false
或string.Empty
,您需要使用正常的if
聲明。
不是。但它確實沒有合併。
給定一個參考類型,如果它是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"
感謝所有的好評! – farina 2012-03-01 20:13:42