有一行代码,关于bool?方面的,强制转换,求教
代码:
CheckSex = (!this.CheckSexMale5 & !this.CheckSexFemale5) ? null : (this.CheckSexMale5 | this.CheckSexFemale5);
CheckSex 是 bool? 类型
CheckSexMale5 是 bool 类型
CheckSexFemale5 是 bool 类型
编译时报错,报错处为三元表达式的第二个和第三个,报错信息为:
无法确定条件表达式的类型,因为"<null>"和"bool"之间没有隐式转换。
不明白的是:
那段三元表达式的计算结果要么是null,要么是bool。而我已经将要赋值的变量CheckSex已经设置为bool?了,为什么会报错呢?
PS:
假如在表达式的第二个和第三个都加上(bool?)强制转换,就没有问题。或其中之一加上也没有问题。但没明白。
请论坛牛牛赐教下,感谢。
------解决方案--------------------本帖最后由 bdmh 于 2014-03-17 10:41:58 编辑
!this.CheckSexMale5 & !this.CheckSexFemale5 这个结果不会是null,所以无法转换
------解决方案--------------------把null改为0试下
------解决方案-------------------- (!this.CheckSexMale5 & !this.CheckSexFemale5) ?
false: (this.CheckSexMale5
------解决方案-------------------- this.CheckSexFemale5);
------解决方案--------------------CheckSex = (!this.CheckSexMale5 & !this.CheckSexFemale5) ?(string.isnullorempty(null)) : (this.CheckSexMale5
------解决方案-------------------- this.CheckSexFemale5);
这样子可不可以?
------解决方案-------------------- null : (this.CheckSexMale5
------解决方案-------------------- this.CheckSexFemale5);
左右两边的类型要匹配,你左边是null,也就是bool?类型,那么右边就也要是同样的类型。
原理知道了,问题解决起来就很简单了。
null : (bool?)(this.CheckSexMale5
------解决方案-------------------- this.CheckSexFemale5);