委托实例化

新创建的委托实例将引用以下各项中的一个:

— 委托创建表达式中引用的静态方法。

— 委托创建表达式中引用的目标对象(此对象不能为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);   //另一个委托

  }

}

委托实例一旦被实例化,将始终引用同一个目标对象和方法。需要记住,当组合两个委托或者从一个委托移除另一个委托时,将产生一个新的委托,该委托具有自己的调用列表;被组合或移除的委托的调用列表将保持不变。

你可能感兴趣的:(委托实例化)