我将如何在C#中重构三个类似的方法

时间:2016-03-30 10:02:22

标签: c# refactoring

我将使用哪些C#构造将这三种类似的方法重构为一种?

void func1()
  if (display.count != 0)
  {
    for (int i = display.count - 1; i >=0; --i)
    {
      if (display[i].test1())
        break;
    }
  }
}

void func2()
  if (display.count != 0)
  {
    for (int i = display.count - 1; i >=0; --i)
    {
      if (display[i].test2())
        break;
    }
  }
}

void func3()
  if (display.count != 0)
  {
    for (int i = display.count - 1; i >=0; --i)
    {
      if (display[i].test3())
        break;
    }
  }
}

1 个答案:

答案 0 :(得分:5)

我会将该方法作为一个函数调用,该函数返回一个布尔值并将一个Display(您的对象类型为as asume)作为参数:

void TestFunc(Func<Display, bool> function)
{
    for (int i = display.count; i >=0; --i)
    {
      if (function(display[i]))
        break;
    }
}

然后您可以这样称呼它:

TestFunc(d => d.test3());