【发布时间】:2015-03-06 19:59:25
【问题描述】:
我看过这个问题diference between delegate and action
我仍然想知道为什么我可以将 lambda 表达式传递给接受 Action 类型参数的方法
而我不能将 lambda 表达式传递给接受委托类型参数的方法
我有这个 Print 方法,我将使用 action 和 Delegate 来引用它
public static void Print()
{
Console.WriteLine("Printing ..");
}
我创建了这两个方法,它们将调用 Print 方法,如您所见,第一个具有 Action 类型参数,第二个具有 Delegate 类型参数,这些参数将引用方法“Print”
public static void ActionParamMethod(Action DAction)
{
DAction();
}
public static void DelegateParamMethod(Delegate SomeDelegate)
{
}
我要将 lambda 表达式传递给这些方法
public static void SomeHowMethod()
{
DelegateParamMethod(() => Print());
ActionParamMethod(() => Print());
}
当我尝试将 lambda 表达式传递给接受 Delegate 参数的方法时,我收到此错误
无法将 lambda 表达式转换为类型“System.Delegate”,因为它 不是委托类型
为什么它不是委托类型而 Action 是委托类型?
为什么我可以将 lambda 表达式传递给接受 Action 参数的方法,但我不能将 lambda 表达式传递给接受 Delegate 参数的方法?
【问题讨论】: