Lambda表达式是一个匿名的方法,在开发期我们是不知道其方法名是什么的,所以我们要怎么递归调用呢?
如果你看过我这文章《让您知道您的方法是被何“人”调用 》的话,你应该会“啊哈”的拍一下头脑,思路就出来了,没错!!就是直接用StackFrame获取当前执行的方法,然后直接Invoke即可。
示例代码:
class Test
{
/**//// <summary>
///
/// </summary>
/// <param name="v1"></param>
/// <param name="v2"></param>
/// <param name="num"></param>
/// <param name="total"></param>
/// <returns></returns>
public delegate long AddMethod(long v1, long v2, int num, int cout);
/**//// <summary>
///
/// </summary>
/// <param name="addMethod"></param>
/// <param name="cout"></param>
static void Print(AddMethod method, int cout)
{
Console.WriteLine(method(0, 1, 2, cout));
}
static void Main()
{
//求0,1,1,2,3,5,8.类似的数据队列在第30个位置的数
Print((v1, v2, num, cout) =>
{
Console.Write(v1);
Console.Write(",");
num++;
&nbs