1. class TestDelegate  
  2.     {  
  3.         public delegate void EventHanding();  
  4.         public event EventHanding OnFireEvnet;  
  5.           
  6.         protected void RegistEvent()  
  7.         {  
  8.             Delegate d1 = new EventHanding(test1);  
  9.   
  10.             Delegate d2 = new EventHanding(test2);  
  11.            
  12.             Delegate d3 = new EventHanding(test3);  
  13.   
  14.             Delegate d4 = new EventHanding(test4);  
  15.   
  16.             Delegate newEvent1 = Delegate.Combine(d1, d2);  
  17.   
  18.             Delegate newEvent2 = Delegate.Combine(d3, d4);  
  19.   
  20.             //新合并的委托是一个新的对象   
  21.             if (Object.ReferenceEquals(d2, newEvent1))  
  22.             {  
  23.                 string str = string.Empty;  
  24.             }              
  25.             if (d2.Method.ToString().CompareTo(newEvent1.Method.ToString())==0)  
  26.             {  
  27.                 string str = string.Empty;  
  28.             }  
  29.   
  30.             EventHanding newEvent = (EventHanding)Delegate.Combine(newEvent1, newEvent2);  
  31.             OnFireEvnet += newEvent;  
  32.         }  
  33.   
  34.         protected void FireEvent()  
  35.         {  
  36.             //单波   
  37.             MulticastDelegate del = (MulticastDelegate)OnFireEvnet;  
  38.             del.Method.Invoke(thisnull);  
  39.   
  40.             //多波   
  41.             OnFireEvnet();  
  42.         }  
  43.   
  44.         int i = 0;  
  45.         public void test1()  
  46.         {  
  47.             i++;  
  48.               
  49.         }  
  50.         public void test2()  
  51.         {  
  52.             i++;  
  53.         }  
  54.         public void test3()  
  55.         {  
  56.             i++;  
  57.   
  58.         }  
  59.         public void test4()  
  60.         {  
  61.             i++;  
  62.         }  
  63.   
  64.         public static void Test()  
  65.         {  
  66.             TestDelegate test = new TestDelegate();  
  67.             test.RegistEvent();  
  68.             test.FireEvent();  
  69.         }  
  70.     }