C#中的事件 一看即明
来源:互联网 发布:参加淘宝聚划算的条件 编辑:程序博客网 时间:2024/06/12 00:16
1.本文写了两个例子来说明C#中的事件。
3.例子2执行结果:
例子1: 事件是:电话响了。 事件发生之后:主人走过来,电视静音了。---该例子事件不带参数不带返回值
例子2: 事件是:知道了圆的半径。 事件发生之后:计算圆的周长,计算圆的面积。---该例子带参数和返回值。
2.例子1执行结果:
例子1代码:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication1 //不带参数不带返回值{ ///事件是:电话响了。 事件发生之后:主人走过来,电视静音了。 // 1.定义一个委托 该委托接收签名为空且返回值为空的方法 public delegate void AfterTeleRinged(); // 2.定义一个事件类 public class TeleRingClass { // 3.事件类中包含:一个事件类型的成员对象,是上面定义的委托类型的 public event AfterTeleRinged teleRinged; // 4.事件类中包含:触发该事件的代码,即调用本事件类中事件的代码,即执行该事件类中的event成员对象中保存的方法 public void CallTheRing() { Console.WriteLine("有人打来电话,电话响啦。。叮铃叮铃叮铃。。"); Console.WriteLine(); teleRinged(); } } class Program { // 5.定义可以注册到事件中的方法 方法要符合事件类中事件的委托类型的规则 public static void MethodInEvent() { Console.WriteLine("电话响了,主人走过来了。"); } public static void MethodInEvent2() { Console.WriteLine("电话响了,电视机自动静音了。"); } static void Main(string[] args) { // 6.事件类初始化 TeleRingClass teleRing = new TeleRingClass(); // 7.事件类中事件成员对象接收来注册的方法 (注意这些方法在注册时只填写方法名不带签名和括号) teleRing.teleRinged += MethodInEvent; teleRing.teleRinged += MethodInEvent2; // 8. 触发事件,即调用事件类中触发事件的方法,会依次执行注册了的方法 teleRing.CallTheRing(); Console.WriteLine(); } }}
3.例子2执行结果:
例子2代码:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication2 //带参数带返回值{ ///事件是:知道了圆的半径。 事件发生之后:自动计算圆的周长,自动计算圆的面积。 // 1.定义一个委托 public delegate double AfterGetTheRadius(double radius); // 2.定义一个事件类 public class GetTheRadiusClass { // 3.事件类中包括:一个事件类型且接收已经定义的委托类型方法的事件成员 public event AfterGetTheRadius GetRadiusEvent; // 4.事件类中包括:触发该事件类中事件的方法 public double GetTheRadius(double radius) { Console.WriteLine("得到圆的半径是: "+radius); Console.WriteLine(); return GetRadiusEvent(radius); } } class Program { // 5.定义可以注册到事件类中的方法 public static double GetLength(double radius) { var lenth=2 * (Math.PI) * radius; Console.WriteLine("自动算出其周长是: " + lenth); return lenth; } public static double GetArea(double radius) { var area=(Math.PI) * radius * radius; Console.WriteLine("自动算出其面积是: "+area); return area; } static void Main(string[] args) { // 6.实例化事件类 GetTheRadiusClass getRadius = new GetTheRadiusClass(); // 7.向事件类中注册方法 getRadius.GetRadiusEvent += GetLength; getRadius.GetRadiusEvent += GetArea; // 8.触发事件 var eventResult= getRadius.GetTheRadius( 10.00 ); //周长 62.8318 面积 314.159 Console.WriteLine(); Console.WriteLine("事件调用完毕的返回值是: " + eventResult);//输出 314.159 } }}4.你应该明白了,步骤是这样的:
1)定义一个委托
2)定义一个事件类
3)事件类中包括:一个事件类型且接收已经定义的委托类型方法的事件成员
4)事件类中包括:触发该事件类中事件的方法
5)定义可以注册到事件类中的方法
6)实例化事件类
7)向事件类中注册方法
8)触发事件(调用事件)
PS:如果你不知什么是委托,请先了解委托的概念,可见本人前一篇博客:
C#中的委托 一看即明 http://blog.csdn.net/xuanwuziyou/article/details/37698275
0 0
- C#中的事件 一看即明
- C#中的委托 一看即明
- C#中的事件
- C#中的事件
- C#中的事件
- C#中的事件!!
- C#中的事件触发
- C# 中的事件处理
- C#中的事件原理
- C# 中的事件处理
- C#中的事件
- C# 中的“事件”
- C#中的事件
- c#中的事件参数
- C#中的委托,事件
- C#中的触发事件
- C#中的事件代理
- 关于c#中的事件
- SQL连接查询2 外连接(左右联接查询)
- cocos2dx学习笔记(新建工程)
- 房管局和各家各户几个和方的观点个地方官地方个电饭锅电饭锅
- Iterator的简单用法
- C++11 关键字auto
- C#中的事件 一看即明
- ThreadLocal
- 风个和风格和风格化是的方法士大夫的观点符合风格和规范化非共和国
- VC 运行时库 /MD、/MDd 和 /MT、/MTd
- Windows下编译webrtc
- 规范和个符合风格化个和风格和风格化个符合风格化
- 34个美丽生活小窍门
- struts2--frameset之间跳转显示的问题(解决方案)
- 风个和风格和风格化国家规划局风格的风格