Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么可以';我是否直接使用数组作为判断语句?_C#_Wpf - Fatal编程技术网

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
,这可以通过使用LINQ
all()
操作符(例如
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 }))
{

}