的组合 ?和??在表达式中

问题描述

|
string value = ( expression ? expression ?? string: string.Method())
不确定如何解包。有人可以帮忙吗?     

解决方法

外部运算符为:
? :
或条件运算符。这是单行的
if
语句。
if (expression)
   first;
else
   second;
可以替换为:
expression ? first : second;
内部运算符
??
或null-coalescing运算符仅返回值本身(如果不是not6ѭ),或者返回另一个值(如果值是is6ѭ)。
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();
}
    ,该示例无效,但让我们假设它是有效的,然后重新格式化:
string value = (
 expression ?   // expression determines which branch to take
                expression ?? string // Null coalescing operator
            : string.Method() // Alternative branch of conditional operator
               );
现在,您是否分别了解null运算符和条件运算符?如果是这样的话,到现在应该一切都清楚了...     ,在C#中,一个? b:c是a则b的缩写。 一种 ?? b是\“如果a == null,则返回b,否则返回a。\”的缩写。如果您知道SQL,请考虑使用\“ ISNULL \”运算符。 我将假设\“ string \”不是类型,而是某种常量字符串。
if (expression1)
{
    if (expression2 != null)
        value = expression2
    else
        value = string1
}
else
{
    value = string2.Method();
}
    ,我不确定您要做什么,因为您的表达式既是布尔值又是字符串,并且不能按原样使用字符串,但是这会更加冗长办法
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
}
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...