如何使用可空bool
本文关键字:bool 何使用 | 更新日期: 2023-09-27 18:11:25
为什么不工作?
bool? value = (1==2 ? true : null);
这个可以正常工作:
bool? value = null;
或
bool? value = true;
您必须显式地将返回类型强制转换为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