C#在条件语句中可为空

为什么我们在第二个陈述中需要显式演员?

bool? a = null; bool b = false; bool c = true;

1.) if(b || c) a = b; else a = null; if(b || c) a = b; else a = null;

2.) a = (b || c)?(Nullable)b:null;

条件运算符是一个表达式,因此它需要一个返回类型 – 两种情况都必须具有相同的返回类型。 在您的情况下,无法自动确定返回类型,因此您需要进行转换。

要添加到Femaref,等效的“if”代码将是类似的

 private static bool? Assign(bool b, bool c) { if (b || c) { return b; } else return null; } ... a = Assign (b,c) 

注意bool? 返回类型。 这就是条件运算符语句中发生的情况