如何使用可空bool

本文关键字:bool 何使用 | 更新日期: 2023-09-27 18:11:25

为什么不工作?

bool? value = (1==2 ? true : null);

这个可以正常工作:

bool? value = null;

bool? value = true;

如何使用可空bool

您必须显式地将返回类型强制转换为bool?,如:

bool? value = (1 == 2 ? (bool?)true : null);

bool? value = (1 == 2 ? true : (bool?)null);

参见条件运算符c#

first_expression和second_expression的类型必须是相同,否则必须存在从一种类型到另一种类型的隐式转换。

由于bool (true)null之间没有隐式转换,因此您得到了错误。

当使用三元操作符时,冒号的两边必须是同一类型:

var value = (1 == 2 ? true : (bool?)null);

这只适用于值类型,因为值类型不能隐式地转换为空(因此需要可空bool、可空int等)。

int groupId = (userId == 7) ? 5 : null;                  // invalid
int groupId = (userId == 7) ? 5 : (int)null;             // valid

可以在引用类型的另一边单独使用null,其中可以为null:

string name = (userId == 7) ? "Bob" : null;              // valid
MyClass myClass = (userId == 7) ? new MyClass() : null;  // valid