ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C#(067):事件event

2022-05-15 09:33:34  阅读:171  来源: 互联网

标签:Char Console 067 C# char Curr CurrChar event chartester


一、概述

委托是类型,事件是成员,事件其实是类中一个private的委托变量和add,remove两个方法。子类无法调用父类的事件。

二、使用

  1. 事件数据类
  2. 定义委托
  3. 声明委托变量
  4. 对象类
  5. 调用
    delegate void CharEventHandler(object sender, CharEventArgs e); //定义委托
    
    public class CharEventArgs : EventArgs //定义一个事件数据类
    {
        public char CurrChar;
        public CharEventArgs(char CurrChar)
        {
            this.CurrChar = CurrChar;
        }
    }
    
    class CharChecker
    {
        char curr_char;
        public event CharEventHandler CharTest;//公布事件(声明委托变量)
        public char Curr_Char
        {
            get { return curr_char; }
            set
            {
                if (CharTest != null)
                {
                    CharEventArgs args = new CharEventArgs(value);
                    CharTest(this, args);// 触发事件(执行委托方法),传递实际参数值到事件处理程序。
                    curr_char = args.CurrChar;
                }
            }
        }
    }
    static void Main()
    {
        CharChecker chartester = new CharChecker();
        chartester.CharTest += (Source, e) =>//将事件与事件处理函数绑定(实例化委托)
        {
            {
                if (e.CurrChar == 'x' || e.CurrChar == 'X')
                {
                    Console.Write("触发的字符是x,");
                    Console.Write("把x替为:");
                    e.CurrChar = '?';
                }
                else
                    Console.Write("触发的字符不是x,");
            }
        };
        chartester.Curr_Char = 'a'; //设置属性值时,触发事件
        Console.WriteLine("事件处理结果:{0}", chartester.Curr_Char);
        
        chartester.Curr_Char = 'b';
        Console.WriteLine("事件处理结果:{0}", chartester.Curr_Char);
        
        chartester.Curr_Char = 'x';
        Console.WriteLine("{0}", chartester.Curr_Char);
        Console.WriteLine();
    }

三、使用泛型委托 EventHandler

在.Net2.0以上,可用泛型,而不需要定义charEventHandler委托。

    public event EventHandler<CharEventArgs> CharTest;

标签:Char,Console,067,C#,char,Curr,CurrChar,event,chartester
来源: https://www.cnblogs.com/springsnow/p/16272337.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有