• clr via c# 事件


    1,定义需要发送给事件接收者的附加信息的类

    class NewMailEventArgs:EventArgs//第一步:定义一个容纳给事件接受者信息的类。
        {
            public string From { get; }
            public string To { get; }
            public string Subject { get; }
            public NewMailEventArgs(string from,string to,string subject)
            {
                this.From = from;
                this.To = to;
                this.Subject = subject;
            }
        }

    2,定义事件成员

    class MailManager
        {
            public event EventHandler<NewMailEventArgs> NewMail;//首先,这是一个委托方法,原型是void MethodName(Object sender,NewMailEventArgs e)
            protected virtual void OnNewMail(NewMailEventArgs e)
            {
                e.Raise<NewMailEventArgs>(this, ref NewMail);
            }
    
            public void SimulateNewMail(string from,string to ,string subject)
            {
                OnNewMail(new NewMailEventArgs(from, to, subject));
            }
        }
    • 首先定义了一个事件成员 NewMail 并且,其类型是EventHandler<NewMailEventArgs>,该类型的原型是

                 void Delegate<T>(object sender,T e);

    •    然后,定义一个出发函数来触发事件。OnNewMail(NewMailEventArgs e),该事件,通过 NewMail(this,e) 来触发

      上面是一个扩展调用,实际上就是调用 NewMail(this,e);

      一个事件,在内部实际上生成了3个构造:

    • 一个私有的委托字段
    • 一个add_xxx方法
    • 一个remove_xxx方法
  • 相关阅读:
    Android OpenGL(2)
    Bootloader:BareBox
    Android OpenGL(1)
    Android脚本环境
    Android用户界面开发:事件处理
    S5PV210按键控制LED
    S5PV210控制蜂鸣器
    Windows Vista/Windows 7上安装wince5.0/6.0及SDK模拟器
    Makefile
    每日英语:Apps Reorder the Job Landscape
  • 原文地址:https://www.cnblogs.com/frogkiller/p/12264364.html
Copyright © 2020-2023  润新知