C#关于lambda表达式作为方法参数的问题

时间:2010-11-18 17:00:31

标签: c# lambda

在页面code.google.com/p/fakeiteasy/我注意到了这一行:

A.CallTo(() => shop.GetTopSellingCandy()).Returns(lollipop);

所以问题是 - 如何将lambda表达式作为方法参数传递?

3 个答案:

答案 0 :(得分:5)

此函数采用Func<T>类型的参数(具有通用参数的普通代理),或者更可能是Expression<Func<T>>expression tree)。

函数本身可能有一个泛型参数,该参数是从传递的方法中推断出来的。

通过获取表达式树,该函数能够检查表达式中的代码并查看它的作用。

答案 1 :(得分:2)

你给出的代码正是这样做的 - 将lambda表达式作为参数传递给方法调用。

答案 2 :(得分:0)

CallTo可能有签名'Call To(Action action)'。所以lambda作为委托传递