如果有条件,则在else中使用空值运算符

时间:2018-07-26 18:01:34

标签: c#

是否可以使用null运算符或任何其他简化代码来简化以下条件?

int? c,a,b;
if(a!=null)
{
  c = a;
}
else if(b!=null)
{
  c = b;
}
else
{
  c = null;
} 

预先感谢

3 个答案:

答案 0 :(得分:4)

您的意思是:

int? c = a ?? (b ?? null)

请注意,根据您的if-else语句,c必须为int?类型。出于相同的原因,ab都是int?类型是有意义的。

因此,由于b可能是null,因此相同的表达式可以重写为:

int? c = a ?? b;

答案 1 :(得分:3)

c = a ?? b ?? null;

尽管如果您的捕获仍然为空,那么您只需要

c = a ?? b;

编辑:正如其他用户所说,如果您正在使用int,则int可为空(int?)很重要。

答案 2 :(得分:3)

假定它们都是int?类型的

int? c = a ?? b; //no need for an explicit null. If b is null so will c be.

因为它们是否为int类型,这个问题没有意义。