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


    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';
        }
    }
  • 相关阅读:
    批量解密SQLSERVER数据库中的各种对象的工具dbForge SQL Decryptor
    微软压力测试工具 web application stress
    使用Microsoft Web Application Stress Tool对web进行压力测试
    数据库
    字体转换方法整理
    C# 开源框架
    IP、操作系统、移动OS
    互联网上的业务
    三元组与序列化
    TCP/IP协议(数据封装与拆装过程)
  • 原文地址:https://www.cnblogs.com/i124q29/p/3869540.html
Copyright © 2020-2023  润新知