Net中事件的用法之二
1.委托与事件的区别
事件对权限做了控制
1.委托可以直接调用
事件不可以直接调用
2.委托允许外面直接赋值
事件不允许外面直接赋值
2.事件与委托的实例比较
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace MyEvent
{
//委托的声明
public delegate void DoSometing(); /// <summary>
/// 委托与事件的关系
/// 委托是一种类型
/// 事件是委托的一个实例
/// </summary>
public class MyEvent
{
public DoSometing doSomethingDelegate;//委托的一个变量
public event DoSometing doSomethingEvent;//一个事件,就是委托的一个变量,加上了event关键字
//事件的使用
public void InvokeEvent()
{
Console.WriteLine("------------InvokeEvent------------");
if (doSomethingEvent != null)
{
doSomethingEvent();
}
}
public void InvokeDelegate()
{
Console.WriteLine("------------InvokeDelegate------------");
if (doSomethingDelegate != null)
{
doSomethingDelegate();
}
}
}
} using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace MyEvent
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("欢迎来到流星小子博客学习");
MyEvent myEvent = new MyEvent();
myEvent.doSomethingEvent += ShowSomething;//为事件实例化
myEvent.doSomethingEvent += ShowSomething;//为事件实例化
//事件不可以直接调用
//myEvent.doSomethingEvent();
//事件不允许外面直接赋值
//myEvent.doSomethingEvent = ShowSomething;
myEvent.doSomethingEvent += ShowSomething;//为事件实例化
myEvent.doSomethingEvent += ShowSomething;//为事件实例化
myEvent.doSomethingEvent -= ShowSomething;//为事件实例化
myEvent.InvokeEvent();//触发事件 myEvent.doSomethingDelegate += ShowSomething;
myEvent.doSomethingDelegate += ShowSomething;
myEvent.doSomethingDelegate += ShowSomething;
//委托可以直接调用
myEvent.doSomethingDelegate();
//委托允许外面直接赋值
myEvent.doSomethingDelegate = ShowSomething; myEvent.doSomethingDelegate += ShowSomething;
myEvent.doSomethingDelegate -= ShowSomething;
myEvent.InvokeDelegate();
Console.Read();
}
private static void ShowSomething()
{
Console.WriteLine("ShowSomething");
}
}
}
Net中事件的用法之二的更多相关文章
- webview中事件的用法
封装 MBProgressHud ==================================== #import "MBProgressHUD.h" @interface ...
- react.js 从零开始(五)React 中事件的用法
事件系统 虚拟事件对象 事件处理器将会传入虚拟事件对象的实例,一个对浏览器本地事件的跨浏览器封装.它有和浏览器本地事件相同的属性和方法,包括 stopPropagation() 和 prevent ...
- jQuery中Animate进阶用法(二)
Step Type: Function( Number now, Tween tween )每个动画元素的每个动画属性将调用的函数.这个函数为修改Tween 对象提供了一个机会来改变设置中得属性值. ...
- Net中事件的用法之一
1.事件与委托的关系 委托是一种类型 事件是委托的一个实例 事件中涉及两种角色--事件发布者和事件订阅者. 事件发布者: 触发事件的对象称为事件发布者. 事件订阅者: 捕获事件并对其做出处理的对象称为 ...
- [学习总结]5、Android的ViewGroup中事件的传递机制(二)
下面是第一篇的连接 Android的ViewGroup中事件的传递机制(一) 关于onInterceptTouchEvent和onTouchEvent的详细解释. 1 public class Mai ...
- [转载]js中return的用法
一.返回控制与函数结果,语法为:return 表达式; 语句结束函数执行,返回调用函数,而且把表达式的值作为函数的结果 二.返回控制,无函数结果,语法为:return; 在大多数情况下,为事件处理函 ...
- mysql中event的用法详解
一.基本概念mysql5.1版本开始引进event概念.event既“时间触发器”,与triggers的事件触发不同,event类似与linux crontab计划任务,用于时间触发.通过单独或调用存 ...
- VC++ 浅谈VS2010中CMFCToolBar的用法
本文将给大家介绍Visual Studio 2010中CMFCToolBar的用法,CMFCToolBar可以让用户自定义工具栏图标,使用静态成员函数SetUserImages()将一个CMFCToo ...
- JS中事件代理与委托
在javasript中delegate这个词经常出现,看字面的意思,代理.委托.那么它究竟在什么样的情况下使用?它的原理又是什么?在各种框架中,也经常能看到delegate相关的接口.这些接口又有什么 ...
随机推荐
- python基础2-静态方法和类方法
1. 类方法 是类对象所拥有的方法,需要用修饰器@classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数(当然可以用其他名称的变量作为其第一个参数,但是 ...
- synchronize类锁用父类作为锁能否锁住代码块
如果有一个父类,Demo如下 public class Demo { public void demo1(){ synchronized (Demo.class){ while (true){ Sys ...
- SpringBoot源码解读系列——开篇
什么是SpringBoot? 定义可以参考官网:SpringBoot官网,其定义通俗易懂,这里就不赘述. 官网也给出了一个通用的SpringBoot工程样例,其中包含了这么几个元素: 1.pom依赖 ...
- Docker入门的亿点点学习
前段时间花了些时间学习了亿点点docker,也算是入门了吧,顺便记了一下笔记拿出来分享给想要接触docker的兄弟们. 没有服务器的兄嘚可以去腾讯云或者阿里云领取免费的试用产品嗷,如果已经领取过了,又 ...
- 赠送4本《 PHP 程序员面试笔试宝典》
< PHP 程序员面试笔试宝典>历时一年,由机械工业出版社出版,在 2018 年 11 月问世.全书共八个章节,涉及 面试笔试经验技巧.PHP 基础知识.PHP 进阶知识,PHP 面向对象 ...
- visual studio自动向量化
//////////////////////////////////////////////////*SSE 和 AVX 每个都有16个寄存器SSE 有 XMM0 ~ XMM15,是128bitAVX ...
- 【计理01组08号】SSM框架整合
[计理01组08号]SSM框架整合 数据库准备 本次课程使用 MySQL 数据库.首先启动 mysql : sudo service mysql start 然后在终端下输入以下命令,进入到 MySQ ...
- Python3+PyMysql
原文地址(持续更新ing-):https://www.caituotuo.top/6bf90683.html 1. 安装PyMySQL pip3 install PyMySQL 2. 创建数据库 # ...
- 攻防世界Web_favorite_number
题目: 解题思路: 直接给php源码,代码审计. 这里需要通过POST方法传递参数stuff,且stuff是一组数组,给了一组数组array['admin','user'] if条件中,需要stuff ...
- 使用jvisualvm监控k8s内java项目
资源文件yaml配置 -javaagent:/usr/skywalking/agent/skywalking-agent.jar -Dcom.sun.management.jmxremote -Dja ...