C#下的关键字delegate实际上是告诉编译器生成一个继承自MulticastDelegate的密封类。而该类的主要职责是创建函数的回调环境。
而生成的密封类定义如下:
namespace DefineNameSpace{
public delegate string DefineDelegate(bool a, bool b, bool c);
public class OtherClassOne
{
public DefineDelegate myDelegate;
}
public class OtherClassTwo{}
}
编译器实际会生成:
namespace DefineNameSpace{
public sealed class DefineDelegate :System.MulticastDelegate
{
public string Invoke(bool a, bool b, bool c);
public IAsyncResult BeginInvoke(bool a, bool b, bool c, AsyncCallback cb, object state);
public string EndInvoce(IAsyncResult result);
}
public class OtherClassOne
{
public DefineDelegate myDelegate;
}
public class OtherClassTwo{}
}
另外,MulticastDelegate类和Delegate类的定义如下:
public