gpt4 book ai didi

c# - 调用时无法将 lambda 表达式转换为类型 'System.Delegate'

转载 作者:太空宇宙 更新时间:2023-11-03 17:30:59 25 4
gpt4 key购买 nike

我得到 Cannot convert lambda expression to type 'System.Delegate' 错误同时:

this.Dispatcher.Invoke((Delegate)(() =>
{
this.Focus();
if (!moveFocus)
return;
this.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
}), DispatcherPriority.Background, new object[0]);

我查了所有关于它的帖子,但我不明白/不明白为什么?而且答案也没有解决我的问题。

最佳答案

Lambda 表达式不能直接转换为 Delegate。但是,如果该方法需要特定类型的委托(delegate)(例如 Action),则您可以使用 lambda 表达式而不进行强制转换。例如,在 .Net 4.5 中存在以下重载:

public void Invoke(Action callback,DispatcherPriority priority)

这意味着您可以这样做:

this.Dispatcher.Invoke(() =>
{
//...
}, DispatcherPriority.Background);

但是 .Net 4 或更早版本中不存在该重载。所以你必须转换为 Action:

this.Dispatcher.Invoke((Action)(() =>
{
...
}), DispatcherPriority.Background);

请注意,我删除了 new object[0]。它不是必需的,因为 Action 不接受任何参数。

关于c# - 调用时无法将 lambda 表达式转换为类型 'System.Delegate',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25930736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com