新创建的委托实例将引用以下各项中的一个:
— 委托创建表达式中引用的静态方法。
— 委托创建表达式中引用的目标对象(此对象不能为null)和实例方法。
— 另一个委托。
例如:
delegate void D(int x);
class C
{
public static void M1(int i) {...}
public void M2(int i) {...}
}
class Test
{
static void Main() {
D cd1 = new D(C.M1); //静态方法
Test t = new C();
D cd2 = new D(t.M2); //实例方法
D cd3 = new D(cd2); //另一个委托
}
}
委托实例一旦被实例化,将始终引用同一个目标对象和方法。需要记住,当组合两个委托或者从一个委托移除另一个委托时,将产生一个新的委托,该委托具有自己的调用列表;被组合或移除的委托的调用列表将保持不变。