string value = ( expression ? expression ?? string: string.Method())
不知道如何解开这个。有人可以帮忙吗?
答案 0 :(得分:4)
外部运营商是:? :
或conditional operator。这是一行if
声明。
if (expression)
first;
else
second;
可以替换为:
expression ? first : second;
内部运算符??
或null-coalescing operator只返回值本身,如果不是null
,或者其他值,如果值是 null
。
x ?? y;
与(通常使用旧代码中的三元运算符表示)相同:
x != null ? x : y;
所以,你的整个陈述(一旦有效,因为我假设陈述的参数不是字面意思):
string value;
if (expression1)
{
value = expression2 ?? "some string";
/*
if (expression2 != null)
{
value = expression2;
}
else
{
value = "some string";
}
*/
}
else
{
value = someMethod();
}
答案 1 :(得分:1)
示例无效,但让我们假装它 有效,然后重新格式化:
string value = (
expression ? // expression determines which branch to take
expression ?? string // Null coalescing operator
: string.Method() // Alternative branch of conditional operator
);
现在,您是否分别了解null-coalescing operator和conditional operator?如果是这样,现在这一切都应该清楚......
答案 2 :(得分:0)
在C#中,一个? b:c表示if a b else c。
a ?? b是“if a == null然后返回b else返回a”的缩写。如果您了解SQL,请考虑“ISNULL”运算符。
我将假设“string”不是类型,而是某种常量字符串。
if (expression1)
{
if (expression2 != null)
value = expression2
else
value = string1
}
else
{
value = string2.Method();
}
答案 3 :(得分:0)
我不确定你要做什么,因为你的表达式既是布尔值又是字符串,你不能按照你的方式使用字符串,但这就是它更详细的内容方式
string value;
if(expression)
{
if(expressionStr != null)
value = expressionStr;
else
value = string.Empty;
}
else
{
value = string.Method(); // Don't know what this is supposed to be
}