不能隐式转换类型’bool?’ ‘bool’。 存在显式转换(您是否错过了演员?)
错误:无法隐式转换类型’bool?’ ‘bool’。 存在显式转换(您是否错过了演员?)
代码:
Test obj = new Test(); obj.IsDisplay = chkDisplay.IsChecked;
但是当我使用这意味着施放在布尔然后没有错误。
Test obj = new Test(); obj.IsDisplay = (bool) chkDisplay.IsChecked;
我需要知道,为什么需要将这个bool转换为bool。
谢谢
你已经宣布IsChecked
为bool?
( Nullable
)。 可以为空的布尔值可以是true
, false
或null
。 现在问问自己:如果IsChecked
为null,那么应该为IsDisplay
分配什么值(只能采用true
或false
)? 答案是没有正确的答案。 这里的隐式转换只会产生隐藏的麻烦,这就是设计师决定只允许显式转换而不是隐式转换的原因。
正如其他人所说的bool?
不等于bool
。 bool?
也可以为null
,请参阅Nullable
( msdn )。
如果你知道null
状态想要暗示什么,你很容易就可以使用?? – null-coalescing operator( msdn )来转换你的bool?
bool
没有任何副作用( Exception
)。
例:
//Let´s say "chkDisplay.IsChecked = null" has the same meaning as "chkDisplay.IsChecked = false" for you //Let "check" be the value of "chkDisplay.IsChecked", unless "chkDisplay.IsChecked" is null, in which case "check = false" bool check = chkDisplay.IsChecked ?? false;
bool?
不是bool
。 它实际上是Nullable
https://msdn.microsoft.com/en-us/library/b3h38hb0(v=vs.110).aspx
如果你需要bool
值那么你应该像你正在做的那样或者在bool?
上调用.Value
属性bool?
。 还有一个.HasValue
属性,您可以检查以确保它不为null。
如果IsChecked
为null,则此行将出错。
obj.IsDisplay = (bool) chkDisplay.IsChecked;
当我使用null check运算符时,我正在面对你的问题?.
:
if (!RolesList?.Any()) //Not accepted: cannot convert bool? to bool
所以我正在使用它
if (RolesList?.Any() != true) //value is null or false
在你的情况下,你应该这样设置:
obj.IsDisplay = chkDisplay.IsChecked ?? false;
布尔不等于布尔?
bool
可以取两个值, true
和false
bool?
可以取三个, true false
和null
这就是他们与众不同的原因
您可以使用以下代码
obj.IsDisplay = chkDisplay.IsChecked == true?true:false;
chkDisplay.IsChecked
的类型为bool?
。 这意味着它可以保存值true
, false
和null
。 但是, obj.IsDisplay
属于bool
类型。 这意味着它只能是true
或false
。
因此,您必须明确地将其bool
转换为bool
类型。 但是,如果您尝试强制转换为bool的值为null
,则仍会抛出exception。
上述就是C#学习教程:不能隐式转换类型’bool?’ ‘bool’。 存在显式转换(您是否错过了演员?)分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
bool? nullableBool = null; bool notNullableBool = (bool)nullableBool; //This will throw InvalidOperationException
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1010475.html