【发布时间】:2012-03-28 09:55:10
【问题描述】:
例如
if (x=="A)
switch (y)
{
case "1": Do1();break;
case "2": Do2();break;
case "3": Do3();break;
}
else if (x=="B")
switch (y)
{
case "1": Do4();break;
case "2": Do5();break;
case "3": Do6();break;
}
else
switch (y)
{
case "1": Do7();break;
case "2": Do8();break;
case "3": Do9();break;
}
我希望我可以执行以下操作,但是它有许多冗余检查。
if (x=="A" && y=="1")
Do1();
else if (x=="A" && y=="2")
Do2();
else if (x=="A" && y=="3")
Do3();
else if (x=="B" && y=="1")
Do4();
else if (x=="B" && y=="2")
Do5();
else if (x=="B" && y=="3")
Do6();
else if (x=="C" && y=="1")
Do7();
else if (x=="C" && y=="2")
Do8();
else if (x=="C" && y=="3")
Do9();
【问题讨论】:
-
2 个字:决策树。您可能可以使用映射到代表的字典字典。
-
另一种选择是将 X 和 Y 连接成一个字符串。作为单级开关可能更容易阅读。
-
您是否发现自己在整个代码中进行了大量此类检查?如果是这样,这可能是将 OOP 引入您的项目的好时机。
-
能否将“1”、“2”、“3”作为参数传递给目标方法,例如DoA(1)、DoA(2)、DoA(3)?
-
@Tung 我之前试过,结果一团糟stackoverflow.com/questions/9892660/…
标签: c#