解决方案 »

  1.   

    void CONNECT(ref myDel A, myDel B){
    if (B != null)
     A += B;
     }
      

  2.   

    B一开始不是null,后来因为需要对象被消除,变成null的
      

  3.   

    B一开始不是null,后来因为需要对象被消除,变成null的
    楼主的意思是不是:当Connect(A,B)时B还是存在的,不是NULL,但是在执行委托链时,B变成空了是吧?
      

  4.   

    如果只有一个B,可以用if(A != null)来解决
    CONNECT(ref A, B);
    B = null  //B的对象被delete
    if(A != null)A(args); //这样调用没问题A中有多个方法的时候,其中只要有一个B为null, 就会无法if判断导致异常。
    CONNECT(ref A, B);
    CONNECT(ref A, C);
    CONNECT(ref A, D);
    B = null  //B的对象被delete
    if(A != null)A(args); // 这样调用error!!! 如果A -= B; 
    确实可以解决,但是操作起来太复杂,每次delete对象前还要一个个删除delegate
    请问如何简单快捷的消除A中的null
      

  5.   


    A在 Class X中
    B在 Class Y中
    希望通过 CONNECT(ref A, B); 来调用 Class Y中的方法
    但是中途Class Y 被delete ,B变为null
    调用A的时候就会异常。
      

  6.   

    简单地说:没办法去除delegate list里的null参照么?