码迷,mamicode.com
首页 > 其他好文 > 详细

事件和委托示例,每一行都有注释

时间:2014-07-26 13:41:46      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   数据   div   ar   line   new   

using System;
delegate void CharEventHandler(object source, CharEventArgs e);    //先声明一个委托,object为事件源,XXXXEventArgs由EventArgs(该类用于将数据传给事件)派生而来;
public class CharEventArgs : EventArgs {    //EventArgs派生类格式,就一个构造函数接受一个字符赋给数据成员;
    public char currchar;    //数据成员;
    public CharEventArgs(char CurrChar) {
        this.currchar = CurrChar;    //设置值;
    }
}
class CharChecker {
    char curr_char;
    public event CharEventHandler TestChar;    //创建事件对象;
    public char Curr_Char {    //属性定义;
        get { return curr_char; }
        set {
            if (TestChar != null) {    //TestChar被声明为事件对象,如无对应事件,则为null;
                CharEventArgs args = new CharEventArgs(value);    //CharEventArgs对象包含事件处理程序所需的值;
                TestChar(this, args);    //调用事件代表,其中this为调用事件的对象,args为CharEventArgs对象;
                curr_char = args.currchar;    //将CharEventArgs对象赋值给数据成员(即实现set);
            }
        }
    }
}
class myApp {
    static void Main() {
        CharChecker tester = new CharChecker();    //声明包含事件的对象,其set被调用时,会创建事件对象和引发事件;
        //tester为事件类声明的对象,TestChar为事件类中声明的事件对象,"+="将事件处理程序加入到事件中,Drop_A为事件处理名称,传递给委托CharEventHandler;
        tester.TestChar += new CharEventHandler(Drop_A);
        tester.Curr_Char = a;    //set引发事件;
        Console.WriteLine("{0}", tester.Curr_Char);    //get很普通,无事件;
        Console.ReadKey();
    }
    static void Drop_A(object source, CharEventArgs e) {    //事件处理程序,在事件发生时被通知;
        if (e.currchar == a || e.currchar == A)
            e.currchar = x;
    }
}

 

事件和委托示例,每一行都有注释,布布扣,bubuko.com

事件和委托示例,每一行都有注释

标签:style   blog   color   数据   div   ar   line   new   

原文地址:http://www.cnblogs.com/i124q29/p/3869540.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!