C#中的`bool?`是可空布尔类型,除了能存`true`和`false`,还能存`null`,用来表示“未知”或“未设置”的状态 。
1. 三种取值:普通`bool`只有真(`true`)和假(`false`)两种,加上问号变成`bool?`后,多了一个`null`值,一共能存三种状态 。
2. 写法含义:它是`Nullable<bool>`的简写,就是在布尔类型后面加个问号,告诉程序这个变量允许为空 。
3. 默认状态:普通`bool`不赋值时默认是`false`,而`bool?`不赋值时默认是`null` 。
使用方式:
1. 判断真假:不能直接把它放在`if`后面用,因为程序不知道`null`算真还是假,得写成`if (flag == true)`或者先检查有没有值 。
2. 逻辑运算:用`&`和`|`做运算时支持三值逻辑,比如`true & null`结果是`null`,但`&&`和`||`这两个短路运算符不支持`bool?` 。
3. 获取数值:想拿到里面的真或假,得先用`HasValue`检查是不是`null`,确认有值后再用`Value`拿出来,或者用`??`给个默认值 。
Null 合并运算符(??)如果左边的值不为null,则返回左边的值,否则返回右边的值。
使用场景:
1. 数据库对应:数据库里的布尔字段有时候是空的(比如用户没选“是否同意”),这时候用`bool?`能完美对应,避免报错 。
2. 区分状态:当你需要区分“假”和“没设置”时用,比如开关状态,`false`是关,`null`是还没配置过 。
3. 参数传递:方法参数如果是`bool?`,调用时可以传`null`,表示不使用该参数控制逻辑,增加灵活性 。

2797

被折叠的 条评论
为什么被折叠?



