事件

using System;

namespace ConsoleApplication3
{
    
public delegate void EventHandle(string s);
    
class ClassA
    
{
        
public event EventHandle myEvent;
        
public void Go()
        
{
            myEvent(
"事件被引发");//此句触发myEvent事件,(myEvent得到“实例化”),从而调动myEvent上的方法b_myEvent
        }

    }

    
class ClassB : ClassA
    
{
       
        
public void MyGo()
        
{
            
this.Go();//this (本类)有继承得到的Go(),虽然是继承的,但是也是自己的
        }

    }

    
class Class1
    
{
        [STAThread]
        
static void Main(string[] args)
        
{
            
//b有两个Go方法,确切地说是 一个Go()方法和一个MyGo()方法
            ClassB b = new ClassB();//ClassB 继承得到了 ClassA 中的“事件”myEvent 所以下面可以在b上调用myEvent
            b.myEvent += new EventHandle(b_myEvent);//用b_myEvent方法挂载到委托上,此时并不会调用b_myEvent方法,只是把b_myEvent的指针地址传入EventHandle(delegate)

            b.MyGo();
//MyGo()去调用Go(),Go()触发myEvent事件
            Console.ReadLine();
        }


        
private static void b_myEvent(string s)
        
{
            Console.WriteLine(s);
        }

    }

}

posted on 2007-11-01 13:25  simhare  阅读(177)  评论(0)    收藏  举报

导航