- class TestDelegate
- {
- public delegate void EventHanding();
- public event EventHanding OnFireEvnet;
- protected void RegistEvent()
- {
- Delegate d1 = new EventHanding(test1);
- Delegate d2 = new EventHanding(test2);
- Delegate d3 = new EventHanding(test3);
- Delegate d4 = new EventHanding(test4);
- Delegate newEvent1 = Delegate.Combine(d1, d2);
- Delegate newEvent2 = Delegate.Combine(d3, d4);
- //新合并的委托是一个新的对象
- if (Object.ReferenceEquals(d2, newEvent1))
- {
- string str = string.Empty;
- }
- if (d2.Method.ToString().CompareTo(newEvent1.Method.ToString())==0)
- {
- string str = string.Empty;
- }
- EventHanding newEvent = (EventHanding)Delegate.Combine(newEvent1, newEvent2);
- OnFireEvnet += newEvent;
- }
- protected void FireEvent()
- {
- //单波
- MulticastDelegate del = (MulticastDelegate)OnFireEvnet;
- del.Method.Invoke(this, null);
- //多波
- OnFireEvnet();
- }
- int i = 0;
- public void test1()
- {
- i++;
- }
- public void test2()
- {
- i++;
- }
- public void test3()
- {
- i++;
- }
- public void test4()
- {
- i++;
- }
- public static void Test()
- {
- TestDelegate test = new TestDelegate();
- test.RegistEvent();
- test.FireEvent();
- }
- }
转载于:https://blog.51cto.com/feelmanc/1250621