C# 这是if-else语句吗

C# 这是if-else语句吗,c#,if-statement,C#,If Statement,可能重复: 我只是偶然发现了下面的代码,不太清楚它的意思,无法用谷歌搜索它,因为谷歌省略了? int? x = 32; int y = x ?? 5; 第二行是否是某种if-else语句,?的意思是什么,它被称为 如果?左侧的值为null,则使用?右侧的值,否则使用左侧的值 扩大: y = x == null ? 5 : x 或 ??运算符与变量集合一起使用,并计算为第一个非空变量的值。例如,考虑下面的代码: int? x = null; int? y = null; int? z =

可能重复:

我只是偶然发现了下面的代码,不太清楚它的意思,无法用谷歌搜索它,因为谷歌省略了

int? x = 32;
int  y = x ?? 5;
第二行是否是某种if-else语句,
的意思是什么,它被称为

如果
左侧的值为
null
,则使用
右侧的值,否则使用左侧的值

扩大:

y = x == null ? 5 : x


??
运算符与变量集合一起使用,并计算为第一个非空变量的值。例如,考虑下面的代码:

int? x = null;
int? y = null;
int? z = null;

y = 12;
int? a = x ?? y ?? z;

a
的值将是12,因为
y
是语句中具有非空值的第一个变量。

是这是if-else语句。
看看这个URL

这只是一个c#特性,还是大多数编程语言的标准特性?由于可空类型是.NET/c#的特性,这是c#特有的。虽然Visual Basic.NET当然也知道可为null的类型,但是
??
运算符和三元运算符在那里不可用。其他语言也可能有一个
操作符,但是,它可能有完全不同的含义。据我所知,它是一个c#feature@ThorstenDittmar:VB使用IF条件运算符支持三元运算和空合并运算。将3个操作数传递给If运算符是类似于C#的条件形式:将2个操作数传递给If运算符是类似于C#的条件形式??操作人员参见VB语言规范第11.22节。我没有说VB不支持可空类型(说可空类型是.NET/C的一个功能,我同意这是误导性的。它们是.NET的一个功能)。事实上我说是的,因为它是一种.net语言。很高兴听到有IF操作员,但是
不可用。我想说的是,这种特殊的语法是C#独有的-功能本身不是,而且可以很容易地在任何给定的编程语言中使用函数和上面给出的完整
if
语句
saj
进行复制。
if(x == null)
     y = 5
else
     y = x
int? x = null;
int? y = null;
int? z = null;

y = 12;
int? a = x ?? y ?? z;