1
有這樣一個事件:訂戶方法不需要創建委託的實例?
class ABC
{
delegate bool X (int a);
event X eventX;
}
ABC.eventX+=someMethod; //works
我假設則委託由編譯器創建隱含?
有這樣一個事件:訂戶方法不需要創建委託的實例?
class ABC
{
delegate bool X (int a);
event X eventX;
}
ABC.eventX+=someMethod; //works
我假設則委託由編譯器創建隱含?
是,之前的.NET 2您必須手動指定:
ABC.eventX+=new X(someMethod);
但它現在有了這個語法隱式創建:
ABC.eventX+=someMethod;
是的,它會自動創建。
例如:
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
(new Program()).Entrance();
}
public void Entrance()
{
ABC a = new ABC();
a.eventX += callback;
}
protected bool callback(int a)
{
return true;
}
}
class ABC
{
public delegate bool X(int a);
public event X eventX;
}
}
程序類將是這個,如果你在反射鏡看到:
internal class Program
{
// Methods
protected bool callback(int a)
{
return true;
}
public void Entrance()
{
ABC a = new ABC();
a.eventX += new ABC.X(this.callback);
}
private static void Main(string[] args)
{
new Program().Entrance();
}
}
你不妨提一提,這就是所謂的*方法組轉換*,萬一OP想要了解更多信息。 – 2011-02-25 07:57:20