c# - 无法将类型 'bool?' 隐式转换为 'bool' 。存在显式转换(您是否缺少转换?)

标签 c# .net

Error : cannot implicitly convert type 'bool?' to 'bool'. An explicit conversion exists (are you missing a cast?)

代码:

Test obj = new Test();
obj.IsDisplay = chkDisplay.IsChecked;

但是当我使用此方法将属性转换为 bool 时,没有错误。

Test obj = new Test();
obj.IsDisplay = (bool) chkDisplay.IsChecked;

我想知道为什么我需要将这个 bool 转换为 bool?

最佳答案

正如其他人所述bool?不等于 bool . bool?也可以是null , 请参阅 Nullable<t> (msdn)。

如果你知道 null 是什么state 想暗示,你可以轻松地使用 ?? - 空合并运算符 ( 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;

关于c# - 无法将类型 'bool?' 隐式转换为 'bool' 。存在显式转换(您是否缺少转换?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22680391/

相关文章:

c# - 从控制台读取 C# 中的 jar 流

c# - 如何将控件移动到动态添加的用户控件到页面中?

c# - 从 DatePicker 和 TimePicker 控件创建 DateTime 对象

c# - 从 C# 访问 COM vtable

c# - 如何比较两个 List<String> ?

c# - 在标题中使用 '/' 时如何防止列不显示在 WPF 数据网格中?

c# - 使用 OpenProcess 和 ReadProcessMemory 的问题

c# - .Net 的 Java AST 解析器

c# - SqlParameter DbType.Date -> SqlDbType.DateTime 转换

Java Webservice 和 .NET 客户端丢弃 DateTime 对象