首先,我使用VS2005和C#2.0。C#2.0泛型:如何使用零参数创建一个Action对象
我想从SelectedIndexChanged事件中设置一个组合框'Text属性。从另一个thread这里StackOverflow上这个被提议做了以下方法:
BeginInvoke(new Action(() => someCombobox.Text = "x"));
现在,首先这将返回一个编译器错误我。我相信那是因为Action对象在两种语言规范中表现不同。在C#2.0中,Action对象似乎在所有声明中都需要<T>
结构。也许我错了,但我想澄清一下。
什么工作如下:
BeginInvoke(new Action<string>(delegate { someCombobox.Text = "x"; }), new object[] { "" });
然而,它只是似乎很奇怪,我认为我有与一类参数(尤其是因为我不打算定义操作对象传递任何参数)!以某种方式删除此参数也会使空的新对象[]过时,这正是我想要的。
任何人都可以帮助我简化上述呼叫吗?
最后,确保BeginInvoke将在SelectedIndexChanged之后完成,从而使用正确的文本更新组合框的Text属性?
我真的很感谢这些问题的答案。
编译错误是由于lambda表达式。 Lambda是C#3.0中的新成员,并且是代表创建语法的简短形式。 – 2009-07-19 04:55:32