我想在仅一行代码中实现不带参数的方法循环,而不是使用while(true) Loop();
基本上我想要这个:
public void StartLoop_InOneLine() => LoopMethod().Loop(FuncBoolToStopLoop());
或这个
public void StartLoop_InOneLine() => LoopMethod.Loop(FuncBoolToStopLoop());
为达到上述目的,我设法创建了一个扩展,但仅当我将方法转换为委托时,该扩展才起作用。
public static class LoopExtensions
{
public static void Loop(this Action method, Func<bool> loopUntil)
{
while(loopUntil.Invoke())
method.Invoke();
}
}
我想了解是否以及如何实现以上所述以进一步实现此模式。
public class Looping
{
//what I would like to do
public void StartLoop_InOneLine() => LoopMethod().Loop(FuncBoolToStopLoop());
//what I want to achieve, in practice
public void StartLoop_InPractice()
{
Action method = LoopMethod;
Func<bool> loopUntil = FuncBoolToStopLoop;
method.Loop(loopUntil);
}
private void LoopMethod(){}
private bool FuncBoolToStopLoop() => true;
}