遍历所有可能的 if 语句
本文关键字:if 语句 有可能 遍历 | 更新日期: 2023-09-27 18:30:39
我正在尝试创建一种方法来循环遍历所有可能的if语句。 我正在循环浏览项目列表,我想看看这些项目对 if 语句的哪些组合是正确的。
因此,当我查看列表中的第一项时,我想查看项目是否通过了第一个 if 条件而不是第二个 if 条件,第二个 if 条件而不是第一个 if 条件,第一个和第二个 if 条件,以及 if 条件。
这就是我正在寻找的,但我在将 for 循环与 if 语句配对时遇到问题。
foreach(var i in items)
{
for(int if1 = 0; if1 < 1; if1++)
{
for(int if2 = 0; if2 < 1; if2++)
{
if if1 = 0 and if2 = 0 then check if both if statements are false
if if1 = 1 and if2 = 0 then check if first if is true and second is false
if if1 = 0 and if2 = 1 then check if first if is false and second is true
if if1 = 1 and if2 = 1 then check if first if is true and second if is true
}
}
}
这是我正在尝试做的事情的简单版本。 最终,它将检查几十个if语句的可能性。
这个问题不是很清楚。但是如果我理解正确,这样的事情应该有效:
foreach(var i in items)
{
// Fake conditions for the purpose of example
bool firstCondition = i.Value1 == 17,
secondCondition = i.Value2 == 37;
for(int if1 = 0; if1 < 1; if1++)
{
for(int if2 = 0; if2 < 1; if2++)
{
bool localCondition1 = if1 == 0 ? !firstCondition : firstCondition,
localCondition2 = if2 == 0 ? !secondCondition : secondCondition;
if (localCondition1 && localCondition2)
{
// do something
}
}
}
}
以上假设您只有一件事要做,基于对原始条件的条件评估。如果您根据条件有不同的事情要做,您可能需要这样的事情:
foreach(var i in items)
{
// Fake conditions for the purpose of example
bool firstCondition = i.Value1 == 17,
secondCondition = i.Value2 == 37;
for(int if1 = 0; if1 < 1; if1++)
{
for(int if2 = 0; if2 < 1; if2++)
{
bool localCondition1 = if1 == 0 ? !firstCondition : firstCondition,
localCondition2 = if2 == 0 ? !secondCondition : secondCondition;
if (localCondition1 && localCondition2)
{
switch (if1 + if2 * 2)
{
case 0:
// if1 == 0, if2 == 0
break;
case 1:
// if1 == 1, if2 == 0
break;
case 2:
// if1 == 0, if2 == 0
break;
case 3:
// if1 == 1, if2 == 1
break;
}
}
}
}
}
当然,您可以将firstCondition
和secondCondition
的初始化替换为您正在测试的实际条件。
虽然恕我直言,如果你真的只是想测试可能的组合,你应该完全摆脱内部循环,只明确地写出if
语句:
foreach(var i in items)
{
// Fake conditions for the purpose of example
bool firstCondition = i.Value1 == 17,
secondCondition = i.Value2 == 37;
if (!firstCondition)
if (!secondCondition)
// if0 == 0, if1 == 0
else
// if0 == 0, if1 == 1
else
if (!secondCondition)
// if0 == 1, if1 == 0
else
// if0 == 1, if1 == 1
}
如果这些都没有解决你的问题,你应该更努力地思考如何表达你的问题,然后编辑问题,使其更容易理解。