Lambda表达式可以转换为委托类型或表达式树-但是必须知道 哪种 委托类型。仅知道签名是不够的。例如,假设我有:
public delegate void Action1();public delegate void Action2();...Delegate x = () => Console.WriteLine("hi");您期望所指对象的具体类型
x是什么?是的,编译器 可以 生成带有适当签名的新委托类型,但这很少有用,并且您进行错误检查的机会也会减少。
如果你想很容易地调用
Control.Invoke与
Action最容易做的事情是添加扩展的方法来控制:
public static void Invoke(this Control control, Action action){ control.Invoke((Delegate) action);}


