C# 为什么可以';我是否直接使用数组作为判断语句?
正确的情况:C# 为什么可以';我是否直接使用数组作为判断语句?,c#,wpf,C#,Wpf,正确的情况: private bool[] if_checkbox_enabled() { bool[] rst = new bool[5]; rst[0] = (bool)a.IsChecked; rst[1] = (bool)b.IsChecked; rst[2] = (bool)c.IsChecked; rst[3] = (bool)d.IsChecked; rst[4] = (bool)e.IsChecked; r
private bool[] if_checkbox_enabled()
{
bool[] rst = new bool[5];
rst[0] = (bool)a.IsChecked;
rst[1] = (bool)b.IsChecked;
rst[2] = (bool)c.IsChecked;
rst[3] = (bool)d.IsChecked;
rst[4] = (bool)e.IsChecked;
return rst;
}
错误案例:
bool[] result = { false, false, false, false, false };
if (if_checkbox_enabled() == result)//no problem
{...}
为什么我不能直接使用bool类型的数组作为判断语句?谢谢 你的第一个例子也错了。你不能像那样比较数组。您可以在一个简单的循环中按每个元素对它们进行比较,也可以使用
SequenceEqual
if (if_checkbox_enabled() == { false, false, false, false, false })//reports error
{...}
或
你的问题没有意义,因为你的“没问题”场景和“报告错误”场景一样有问题。你不能像那样比较数组,因为即使在“没问题”的场景中,它也不起作用(你只是比较引用,引用永远不会相等)。有关如何比较阵列的信息,请参见标记的重复。请记住,首先比较数组是否真的是实现此逻辑的最佳方式是值得怀疑的。@Rise:这个问题与赋值无关,因此您建议的更改标题的编辑是无效的。谢谢。我有2^5=32个案例,因为每个被检查的案例有2个状态。比较阵列是最好的方法吗?@Peter Duniho“比较数组是最好的方法吗?”——未知,因为没有足够的细节。你真的有32种不同的结果吗?即,根据具体组合,您将执行32种不同的操作?若然,原因为何?这些行动是什么?如果不是,那么较小数量的操作如何映射到复选框中可用的组合?在您的示例中,您所关心的只是五个操作都是
false
,这可以通过使用LINQall()
操作符(例如If(If_checkbox\u enabled().all(f=>!f))
)轻松处理。即使有更多的条件,也有可能推广条件组。
bool[] result = { false, false, false, false, false };
if (if_checkbox_enabled().SequenceEqual(result))
{
//Do something
}
if (if_checkbox_enabled().SequenceEqual(new bool[]{ false, false, false, false, false }))
{
}