铸造可空的布尔到布尔

时间:2011-02-17 16:12:47

标签: c#

我有一个对象AlternateName.IsMaidenName

我想将其转换为复选框 - IsMaidenName

它不会让我投下它所说的无法将源类型可空转换为目标类型bool。

我在我们的应用程序中的其他位置遇到过这个问题但是我想把它扔出去以便更好地处理这些问题。

IsMaidenNameChecked = AlternateName.IsMaidenName;

4 个答案:

答案 0 :(得分:29)

你不能将一个可空的bool强制转换为bool是合乎逻辑的,因为当nullable包含null时,bool应该有什么值?

我会做的是:

IsMaidenNameChecked = AlternateName.IsMaidenName ?? false;

答案 1 :(得分:17)

IsMaidenName.Checked = AlternateName.IsMaidenName.GetValueOrDefault();

请参阅:http://msdn.microsoft.com/en-us/library/72cec0e0.aspx

答案 2 :(得分:5)

你可能想做类似的事情:

 IsMaidenNameChecked = AlternateName.IsMaidenName.GetValueOrDefault ();

请参阅Nullable.GetValueOrDefault (),或者您可以使用包含显式默认值的重载。

答案 3 :(得分:1)

复选框和Nullable<bool>都有三种状态:“true”,“false”和“missing”。

但是您试图将值存储在中间bool变量中,该变量无法处理“丢失”。

尝试将bool变量更改为bool?