我想写一个做一些工作的方法,最后返回另一个与原始方法具有相同签名的方法。这个想法是依次处理一个字节流,而不是进入递归。通过这样称呼它:
MyDelegate executeMethod = handleFirstByte //What form should be MyDelegate?
foreach (Byte myByte in Bytes)
{
executeMethod = executeMethod(myByte); //does stuff on byte and returns the method to handle the following byte
}
要切换方法,我想将它们分配给Func委托。但我遇到的问题是,这导致递归声明而没有终止......
Func<byte, Func<byte, <Func<byte, etc... >>>
我不知怎的在这里迷路了。我怎么能绕过那个?
答案 0 :(得分:10)
当预定义的Func<...>
代表不够时,您可以简单地声明委托类型:
public delegate RecursiveFunc RecursiveFunc(byte input);
如果您需要它,您也可以使用泛型:
public delegate RecursiveFunc<T> RecursiveFunc<T>(T input);