C# 在C中调用和委托#
有人能解释一下这段代码的语法吗C# 在C中调用和委托#,c#,winforms,delegates,invoke,C#,Winforms,Delegates,Invoke,有人能解释一下这段代码的语法吗 Invoke((MethodInvoker) ( () => { checkedListBox1.Items.RemoveAt(i); checkedListBox1.Items.Insert(i, temp); checkedListBox1.Update(); } ) ); 我正在使用backgroundworker
Invoke((MethodInvoker)
(
() =>
{
checkedListBox1.Items.RemoveAt(i);
checkedListBox1.Items.Insert(i, temp);
checkedListBox1.Update();
}
)
);
我正在使用backgroundworker,它需要更新部分UI,所以我使用了这个。它可以工作,但我不知道空的()和=>是什么意思。()和=>是一个
是类型为Action
的委托,它执行块中的代码
Func<string> f = () => {
//code here
return "string";
}
Func f=()=>{
//代码在这里
返回“字符串”;
}
是Func
类型的委托,它执行块中的代码,然后返回字符串
Func<int, int, string> f = (i, j) => {
//code here
return "string"+i+j;
}
Func f=(i,j)=>{
//代码在这里
返回“字符串”+i+j;
}
是一个类型为Func
的委托,它在代码块中有两个引用i和j的int参数,并返回一个字符串
Func<int, int, string> f = (i, j) => {
//code here
return "string"+i+j;
}
等等。()=>
引入了一个
如果lambda表达式接收到参数,则它们将列在括号内。你的λ等于
void foo()
{
...
}
那真是个好主意。epmty括号表示它不接受任何参数
尽管这段代码似乎遗漏了一些东西,但不要认为它可以编译。W
调用的作用是调用UI线程。当您执行处理时,您希望在后台线程上执行该操作,并且只对UI线程进行短期调用。这样您就可以保持UI的响应性
因此,这个snippts将一项工作(将项目添加到组合框)传递到UI线程以完成它。后台线程不能直接在UI线程上执行操作
关于GJ你应该读这篇文章-