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相关的接口.这些接口又有什么 ...
随机推荐
- 使用MediaPlayer框架实现简单音乐播放器-陈棚
该项目需要使用MediaPlayer框架,因此程序需要先为该项目添加MediaPalyer框架,并在上面控制器类的实现部分使用#import<MediaPlayer/MediaPlayer.h& ...
- 通过版本号来判断用户是否是第一次登陆----By张秀清
@interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)appl ...
- 员工管理系统+字符编码+Python代码文件操作
员工管理系统+字符编码+Python代码文件操作 1.员工管理系统 1.1 debug 代码调试 1.先使用鼠标左键在需要调试的代码左边点击一下(会出现一个红点)2.之后右键点击debug运行代码 ...
- Solution -「CF 855G」Harry Vs Voldemort
\(\mathcal{Description}\) Link. 给定一棵 \(n\) 个点的树和 \(q\) 次加边操作.求出每次操作后,满足 \(u,v,w\) 互不相等,路径 \((u,w ...
- Solution -「ARC 063D」「AT 2149」Snuke's Coloring 2
\(\mathcal{Decription}\) Link. 平面上有一个左下角坐标 \((0,0)\) 右上角坐标 \((W,H)\) 的矩形,起初长方形内部被涂白. 现在给定 \(n\) ...
- 第二章 初始MySQL 语法
1.使用MySQL的优势 运行速度快.MySQL体积小,命令执行的速度快: 使用成本低.MySQL是开源的. 容易使用. 可移植性强.MySQL能够运行于多种系统平台之上,windows,linux, ...
- VS2019配置eigen
本文讲述如何在VS2019中配置eigen eigen版本:eigen-3.3.9 百度网盘地址:https://pan.baidu.com/s/1Bu5A58qV2n8doDs4NpPfJQ 提取 ...
- logstash获取nginx日志的配置
nginx部分配置直接用json,省去很多麻烦 log_format json '{"@timestamp":"$time_iso8601",' '" ...
- [题解]UVA10026 Shoemaker's Problem
链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&am ...
- 【C# 异常处理】 开端
异常概述 在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避免的,比如:客户输入数据的格式,读取文件是否存在,网络是 ...