两者有什么区别?
Invoke((MethodInvoker) delegate { checkedListBox1.Items.RemoveAt(i); checkedListBox1.Items.Insert(i,temp + validity); checkedListBox1.Update(); } );
VS
Invoke((MethodInvoker) ( () => { checkedListBox1.Items.RemoveAt(i); checkedListBox1.Items.Insert(i,temp + validity); checkedListBox1.Update(); } ) );
有没有理由使用lambda表达式?和(MethodInvoker)将代理和lambda转换成MethodInvoker类型?什么样的表达式不需要(MethodInvoker)转换?
解决方法
1)lambda表达式更短,更干净
2)是的
3)您可以使用Action类型,如下所示:
Invoke(new Action( () => { checkedListBox1.Items.RemoveAt(i); checkedListBox1.Items.Insert(i,temp + validity); checkedListBox1.Update(); } ) );