我已经考虑过这个问题已经有一段时间了,但我无法在不必编写重复代码的情况下考虑解决方案。部分c#和部分伪代码中的问题:
bool test = true;
if (test == true)
{
if(first condition) {code}
}
else
{
if(different condition) {same code as above)
}
我必须在程序的性能密集部分中使用此部分,并且我必须传输3个大参数,这就是我不想使用方法的原因。
还有另一种解决方法吗?
答案 0 :(得分:5)
if((test && firstCondition) || (!test && differentCondition)) {
//code
}
答案 1 :(得分:3)
if ((test && first_condition) || (!test && different_condition)) {
callSomeFunction();
}
答案 2 :(得分:0)
我这样做:
// create an inline function to capture the
Action workAction = () => { //work; }
bool test = true;
if (test == true)
{
if(first condition) {workAction(); }
}
else
{
if(different condition) {workAction(); )
}
答案 3 :(得分:0)
根据条件的复杂程度,这种方法有时可以提供帮助:
bool doBigCall = false;
if (test1)
{
if (test2)
{
doBigCall = true;
}
else
{
// ...
}
}
else
{
// ...
}
if (doBigCall)
{
// write the big bit of code just once
}