[英]C# inline if or value syntax
C#是否具有JavaScript if或value語法?
例如,我知道您可以在JavaScript中執行此操作:
var test = someValue || thisValue;
如果someValue是undefined,false或空字符串,則test變為thisValue 。 但是,除了傳統的if或inline之外,我從未在C#中看到過這樣做的方法。
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時有效。 要檢查false
或string.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.