当我运行此语法时,我的消息框告诉我数组2中存在该值 AND 我收到一条消息,指出该值不存在。
导致两条消息显示的原因是什么?我如何重写以解决这个问题呢?
string[] Arr1 = new string[] { "Game1", "Game2", "Game3" };
string[] Arr2 = new string[] { "Vid1", "Vid2", "Vid3" };
string[] Arr3 = new string[] { "Con1", "Con2", "Con3" };
string sVal = "Vid1";
if (Arr1.Any(x => x == sVal))
{
MessageBox.Show("Value Exists in Array 1");
}
if (Arr2.Any(x => x == sVal))
{
MessageBox.Show("Value Exists in Array 2");
}
if (Arr3.Any(x => x == sVal))
{
MessageBox.Show("Value Exists in Array 3");
}
else
{
MessageBox.Show("Value Does Not Exists in Any Array");
}
答案 0 :(得分:1)
___ ___ ___ ___
/ \ / \ / \ / \ /
/ 0,0 \___/ 0,2 \___/ 0,4 \___/ 0,6 \___/
\ / \ / \ / \ / \
\___/ 0,1 \___/ 0,3 \___/ 0,5 \___/ 0,7 \
/ \ / \ / \ / \ /
/ 1,0 \___/ 1,2 \___/ 1,4 \___/ 1,6 \___/
\ / \ / \ / \ / \
\___/ 1,1 \___/ 1,3 \___/ 1,5 \___/ 1,7 \
/ \ / \ / \ / \ /
/ 2,0 \___/ 2,2 \___/ 2,4 \___/ 2,6 \___/
\ / \ / \ / \ / \
\___/ 2,1 \___/ 2,3 \___/ 2,5 \___/ 2,7 \
代码的最后一部分:
string[] Arr1 = new string[] { "Game1", "Game2", "Game3" };
string[] Arr2 = new string[] { "Vid1", "Vid2", "Vid3" };
string[] Arr3 = new string[] { "Con1", "Con2", "Con3" };
string sVal = "Vid1";
bool in1 = Arr1.Contains(sVal);
bool in2 = Arr2.Contains(sVal);
bool in3 = Arr3.Contains(sVal);
if (!in1 && !in2 && !in3)
MessageBox.Show("Value Does Not Exists in Any Array");
else
{
if (in1)
MessageBox.Show("Value Exists in Array 1");
if (in2)
MessageBox.Show("Value Exists in Array 2");
if (in3)
MessageBox.Show("Value Exists in Array 3");
}
// Output: Value Exists in Array 2
被视为单个if (Arr3.Any(x => x == sVal))
{
MessageBox.Show("Value Exists in Array 3");
}
else
{
MessageBox.Show("Value Does Not Exists in Any Array");
}
,其中:
if statement
中找到该值,则会显示消息Arr3
"Value Exists in Array 3"
中找不到该值,则会显示消息Arr3
由于"Value Does Not Exists in Any Array"
不包含Arr3
,因此您将始终收到该消息,因为其他两项检查不依赖于最后一项。
答案 1 :(得分:-1)
您未正确加入。除了第一个之外,你需要为其他所有东西写“else if”。 否则只有最后一个if连接到else,而另外两个ifs独立,将打印消息。
如果一个值可以在多个数组中,则应添加一个bool变量,并在其中一个if为true时将其设置为true。