我有一个代码重复,我想避免,但我不能创建一个包含代码的方法,因为if中的一行有细微的差别。这就是我的意思:
代码1:
If case1 ()
{
same code
if()
{
same code
line1
}
代码2:
If case2 ()
{
same code
if()
{
same code
line2
}
除了一行(line1和line2)之外,两个代码都是相同的。由于代码很大,我希望能够在函数内复制它。你知道怎么做吗?
由于
答案 0 :(得分:3)
一般来说,您正在寻找Action
或Func
。这是一种封装可执行代码的类型:
public int YourCommonMethod(int parameter, Func<int, int> calculate)
{
// some common code
if(calculationNeeded)
{
// some common code
result = calculate(parameter);
}
// more common code
}
然后您可以使用两种不同的计算方法调用它:
int result = YourCommonMethod(5, i => i + 17);
OR
int result = YourCommonMethod(5, i => i / 48);
只需采取行动,您就需要更少:
public int YourCommonMethod(int parameter, Action<int> doWork)
{
// some common code
if(calculationNeeded)
{
// some common code
doWork(parameter);
}
// more common code
}
你可以这样称呼它:
int result = YourCommonMethod(5, Console.WriteLine);
OR
int result = YourCommonMethod(5, i => Console.WriteLine("Some string including {0}", i));
答案 1 :(得分:1)
您可以将代码拆分为多种方法:
if (case1)
{
subMethod1();
if ()
{
subMethod2();
line1;
}
}
if (case2)
{
subMethod1();
if ()
{
subMethod2();
line2;
}
}