文档章节

事件event

o
 osc_pn11u1x9
发布于 2018/08/06 09:47
字数 292
阅读 0
收藏 0

精选30+云产品,助力企业轻松上云!>>>

一、概述

委托是类型,事件是成员,事件其实是类中一个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<T>

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

public event EventHandler<CharEventArgs> CharTest;
o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
【TencentOS tiny】深度源码分析(7)——事件

引言 大家在裸机编程中很可能经常用到这种变量,用来标志一下某个事件的发生,然后在循环中判断这些标志是否发生,如果是等待多个事件的话,还可能会这样子做判断。当然,如果聪明一点的同学...

杰杰1号
2019/10/16
22
0
libevent学习笔记(参考libevent深度剖析)

最近自学libevent事件驱动库,参考的资料为libevent2.2版本以及张亮提供的《Libevent源码深度剖析》, 参考资料: http://blog.csdn.net/sparkliang/article/details/4957667 libevent好处之...

secondtonone1
2016/08/10
75
0
MySql Binlog事件介绍篇

系列文章 MySql Binlog初识 MySql Binlog事件介绍篇 MySql Binlog事件数据篇 Mysql通讯协议分析 基于Netty模拟解析Binlog 前言 上一篇文件MySql Binlog初识,对Binlog的参数,格式以及个别事...

ksfzhaohui
2017/11/13
468
0
libevent源码深度剖析三

libevent源码深度剖析三 ——libevent基本使用场景和事件流程 张亮 1 前言 学习源代码该从哪里入手?我觉得从程序的基本使用场景和代码的整体处理流程入手是个不错的方法,至少从个人的经验上...

romalin99
2015/04/04
3
0
分析kubernetes中的事件机制-源码解析

我们通过 命令,可以在看到Event输出,并且经常依赖event进行问题定位,从event中可以分析整个POD的运行轨迹,为服务的客观测性提供数据来源,由此可见,event在Kubernetes中起着举足轻重的作...

漫步旅行者
03/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

聊聊rocketmq-client-go的TraceInterceptor

序 本文主要研究一下rocketmq-client-go的TraceInterceptor TraceInterceptor rocketmq-client-go-v2.0.0/producer/interceptor.go // WithTrace support rocketmq trace: https://github.c......

go4it
52分钟前
0
0
如何在Android文本视图周围添加边框? - How do I put a border around an Android textview?

问题: 是否可以在textview周围绘制边框? 解决方案: 参考一: https://stackoom.com/question/EfXR/如何在Android文本视图周围添加边框 参考二: https://oldbug.net/q/EfXR/How-do-I-put...

法国红酒甜
今天
10
0
设计模式(4) 建造者模式

什么是建造者模式 经典建造者模式的优缺点 对建造者模式的扩展 什么是建造者模式 建造者模式将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。创建者模式隐藏了...

zhixin9001
今天
14
0
ArrayList源码分析 —— JDK8

ArrayList的特性 ArrayList内部使用数据作为存储结构,ArrayList可以理解为数组的扩展对象,封装了常用的和非常用的操作数组的方法。以及当数组长度不足以保存数组时,自动扩容数组,通常Arr...

XuePeng77
今天
56
0
__slots__的用法? - Usage of __slots__?

问题: Python中__slots__的目的是什么-尤其是关于何时以及何时不使用它的目的? 解决方案: 参考一: https://stackoom.com/question/1ymu/slots-的用法 参考二: https://oldbug.net/q/1ym...

富含淀粉
今天
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部