使用此代码:
private bool AtLeastOnePlatypusChecked()
{
return ((ckbx1.IsChecked) ||
(ckbx2.IsChecked) ||
(ckbx3.IsChecked) ||
(ckbx4.IsChecked));
}
......我已经停止了
Operator '||' cannot be applied to operands of type 'bool?' and 'bool?
那我该怎么做呢?
答案 0 :(得分:31)
您可以使用最后的null-coalescing运算符将|
链接在一起:
return (ckbx1.IsChecked | cxbx2.IsChecked | cxbx3.IsChecked | cxbx4.IsChecked) ?? false;
如果两个操作数均为|
,则true
运算符返回true
,false
如果两个操作数均为false
,则返回null
操作数为null
,另一个不是true
。
这不是短路,但我不认为在这种情况下对你来说会有问题。
或者 - 更可扩展 - 将复选框放入某种集合中。然后你可以使用:
return checkboxes.Any(cb => cb.IsChecked ?? false);
答案 1 :(得分:11)
尝试:
return ((ckbx1.IsChecked ?? false) ||
(ckbx2.IsChecked ?? false) ||
...
答案 2 :(得分:6)
我假设如果为null,那么它将是假的,你可以使用??操作
private bool AtLeastOnePlatypusChecked()
{
return ((ckbx1.IsChecked ?? false) ||
(ckbx2.IsChecked ?? false) ||
(ckbx3.IsChecked ?? false) ||
(ckbx4.IsChecked ?? false));
}
答案 3 :(得分:5)
您可以使用GetValueOrDefault()
获取值,或false
。
private bool AtLeastOnePlatypusChecked()
{
return ((ckbx1.IsChecked.GetValueOrDefault()) ||
(ckbx2.IsChecked.GetValueOrDefault()) ||
(ckbx3.IsChecked.GetValueOrDefault()) ||
(ckbx4.IsChecked.GetValueOrDefault()));
}
答案 4 :(得分:4)
您可以使用以下内容:
(ckbx1.IsChecked.HasValue && ckbx1.IsChecked.Value)