zoukankan      html  css  js  c++  java
  • 事件和委托示例,每一行都有注释

    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';
        }
    }
  • 相关阅读:
    namespace std 定义的位置
    [Struts]学习日记3 在页面中显示条目列表
    [Hibernate]关于ID的一个容易混淆的地方
    [Struts]"Cannot find bean in any scope"之一解
    [Struts]HibernatePlugIn for Struts(转贴)
    日志搬家了!
    [Struts]学习日记2 增加一些验证
    实验室的项目 讨论
    Struts常见异常信息和解决方法
    参加婚礼
  • 原文地址:https://www.cnblogs.com/i124q29/p/3869540.html
Copyright © 2011-2022 走看看