1. 给委托实例赋值的时候,参数类型不一定要完全相同,兼容的也可以,比如以下。
delegate void MyDel(string s);
void MyFun(object obj)
{
...
}
MyDel md = MyFun; // OK. 因为string派生于object
2. 委托的合并与删除是通过Delegate的静态方法Combine和Remove实现的。行为类似于string, 委托实例一旦创建就无法更改,每次都是新生成一个委托对象。比如上面的委托,
md += null; // null会创建成一个空调用列表的委托实例,与md合并成一个新的实例并返回