如何声明返回相同类型的Func委托的Func委托?

时间:2015-01-16 17:17:36

标签: c# delegates func

我想写一个做一些工作的方法,最后返回另一个与原始方法具有相同签名的方法。这个想法是依次处理一个字节流,而不是进入递归。通过这样称呼它:

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... >>>

我不知怎的在这里迷路了。我怎么能绕过那个?

1 个答案:

答案 0 :(得分:10)

当预定义的Func<...>代表不够时,您可以简单地声明委托类型:

public delegate RecursiveFunc RecursiveFunc(byte input);

如果您需要它,您也可以使用泛型:

public delegate RecursiveFunc<T> RecursiveFunc<T>(T input);