Invoke之Delegate参数

Dispatcher.Invoke(Delegate method,params object[] args)

这个方法的第一个参数 Delegate method 是一个委托类型,所以理论上传入一个委托不会出现问题,譬如:

Dispatcher.Invoke(new Action<string>((x) =>
{
    Console.WriteLine($"{x}");
}), new object[] { "delegate" });

上面的代码确实没有问题。接下来我们要说的是:

new Action<string>((x) =>
{
    Console.WriteLine($"{x}");
}

可以简写为:

((x) =>
{
    Console.WriteLine($"{x}");
}

那么 Dispatcher.Invoke 可以写成:

Dispatcher.Invoke(((x) =>
{
    Console.WriteLine($"{x}");
}), new object[] { "delegate" });

那么出问题了,系统没有与之相匹配的方法。导致出现该问题的原因是不是写成lambda表达式后,C#编译器没有办法识别出lambda表达所代表的委托类型类型造成的?

posted @ 2022-04-09 22:39  xmllxm  阅读(269)  评论(0)    收藏  举报