举办这样的活动:
class ABC
{
delegate bool X (int a);
event X eventX;
}
ABC.eventX+=someMethod; //works
我假设委托是由编译器隐式创建的?
答案 0 :(得分:6)
是的,在.NET 2之前,您必须手动指定它:
ABC.eventX+=new X(someMethod);
但它现在使用以下语法隐式创建:
ABC.eventX+=someMethod;
答案 1 :(得分:0)
是的,它是自动创建的。
例如:
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;
}
}
如果你在反射器中看到,那么Program类就是这个:
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();
}
}