我有一个对象AlternateName.IsMaidenName铸造可空布尔为bool
我要强制转换成一个复选框 - IsMaidenName
它不会让我投的是因为它说无法转换源可空类型到目标类型布尔。
我在我们的应用程序的其他位置有过这个问题,但我想把它放在那里以更好地处理这些问题。
IsMaidenNameChecked = AlternateName.IsMaidenName;
我有一个对象AlternateName.IsMaidenName铸造可空布尔为bool
我要强制转换成一个复选框 - IsMaidenName
它不会让我投的是因为它说无法转换源可空类型到目标类型布尔。
我在我们的应用程序的其他位置有过这个问题,但我想把它放在那里以更好地处理这些问题。
IsMaidenNameChecked = AlternateName.IsMaidenName;
这是很合乎逻辑,你不能施放一个可空布尔为BOOL,因为在布尔应该有什么样的价值,当可为空包含空?
我会做什么,是这样的:
IsMaidenNameChecked = AlternateName.IsMaidenName ?? false;
复选框和Nullable<bool>
都有三个状态:“true”,“false”和“missing”。
但是,您正试图将该值存储在无法处理“缺失”的中间变量bool
中。
尝试将您的bool
变量更改为bool?
。
IsMaidenName.Checked = AlternateName.IsMaidenName.GetValueOrDefault();
你可能想这样做:
IsMaidenNameChecked = AlternateName.IsMaidenName.GetValueOrDefault();
见Nullable.GetValueOrDefault(),或者您也可以使用包括一个明确的默认超载。
在.NET中`bool`的默认值为`false`的附加警告 - http://msdn.microsoft.com/en-us/library/83fhsxwc.aspx – 2011-02-17 16:17:49
请注意,有一个[过载] (http://msdn.microsoft.com/en-us/library/3d6d4f1d(v=vs.110).aspx) - 您可以说`GetValueOrDefault(true)`,也就是指定要返回的默认值情况为空。所以你不限于返回'false'。 – David 2014-12-18 16:06:48