将可空布尔型转换为布尔型

11

我有一个名为AlternateName.IsMaidenName的对象

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

它不允许我将其强制转换,因为它说无法将源类型nullable转换为目标类型bool。

在我们的应用程序中,我在其他地方遇到过这个问题,但我想寻求更好的处理方法。

IsMaidenNameChecked = AlternateName.IsMaidenName;
4个回答

32

你无法将可空的bool类型转换为bool类型是很合理的,因为当可空对象包含null时,bool类型应该有什么值呢?

我会这样做:

IsMaidenNameChecked = AlternateName.IsMaidenName ?? false;

这很好。我甚至更喜欢它 :-) - Peter Perháč
我最初使用了下面的线程 (GetValueOrDefault();),但这个似乎更好一些...不过两个都可以用...感谢帮助。 - gevjen

18

1
在.NET中,需要注意的是bool类型的默认值为false - http://msdn.microsoft.com/en-us/library/83fhsxwc.aspx - Daniel DiPaolo
1
请注意,这里有一个重载 -- 你可以说 GetValueOrDefault(true),也就是在空值的情况下指定要返回的默认值。因此,你不必局限于返回false - David

5
您可能想要做类似以下的事情:

 IsMaidenNameChecked = AlternateName.IsMaidenName.GetValueOrDefault ();

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

1

复选框和 Nullable<bool> 都有三种状态:"true"、"false" 和 "missing"。

但是你试图将值存储在一个中间的 bool 变量中,而这个变量无法处理 "missing"。

尝试将你的 bool 变量改为 bool?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接