Event/Delegate的一个不错实例


namespace MicrosoftEventPattern
{
    
public class MyClass
    {
        
public delegate void MyDelegate(object sender, MyEventArgs e);
        
public event MyDelegate MyEvent;

        
public class MyEventArgs : EventArgs
        {
            
public readonly string message;
            
public MyEventArgs(string message)
            {
                
this.message = message;
            }
        }
        
//this method will be used to raise the event.
        public void RaiseEvent(string msg)
        {
            
if (MyEvent != null)
                MyEvent(
thisnew MyClass.MyEventArgs(msg));
        }
    }
    
class Program
    {
        
static void Main(string[] args)
        {
            MyClass myClass1 
= new MyClass();
            myClass1.MyEvent 
+= new MyClass.MyDelegate(myClass1_MyEvent);

            Console.WriteLine(
"Please enter a message\n");
            
string msg = Console.ReadLine();

            
//here is we raise the event.
            myClass1.RaiseEvent(msg);
            Console.Read();
        }
        
static void myClass1_MyEvent(object sender, MyClass.MyEventArgs e)
        {
            
if (sender is MyClass)
            {
                MyClass myClass 
= (MyClass)sender;
                Console.WriteLine(
"Your Message is: {0}", e.message);
            }
        }
    }
}

posted @ 2008-11-20 17:58  roboth  阅读(227)  评论(0)    收藏  举报