我想知道有關Invoke(委託)方法。我不明白爲什麼我不需要指定參數。如果我需要他們的話,會怎麼樣呢?在你的下面你會更好地理解我的意思。謝謝調用代表問題
EventHandler a = new EventHandler(this.A);
Invoke(a); //where doest it take the arguments from?
a(); //does not work, missing arguments
我想知道有關Invoke(委託)方法。我不明白爲什麼我不需要指定參數。如果我需要他們的話,會怎麼樣呢?在你的下面你會更好地理解我的意思。謝謝調用代表問題
EventHandler a = new EventHandler(this.A);
Invoke(a); //where doest it take the arguments from?
a(); //does not work, missing arguments
由於調用,就是要在Windows窗體上使用,並且這裏使用的是很好的說明事件的格局,Invoke方法可以使一個受過教育的猜測。實際上,如果您嘗試使用Invoke調用不帶參數的EventHandler,則它正好如此:
委託可以是EventHandler的一個實例,在這種情況下sender參數將包含此控件,並且事件參數將包含EventArgs.Empty。
您可以也應該使用Invoke的重載,該重載允許您指定委託的參數,以便更清楚地說明發生了什麼。此外,調用不帶參數數組的Invoke只適用於EventHandler類型的代理(或者當然,代表不首先使用任何參數的代理)。
我不使用EventHandlers,但對代表使用動態調用。通常,至少對我來說,代碼最終看起來是這樣的
a.Invoke(new object[] { arg0, .... argn });