首先,我使用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