事件、委托的定义与使用示例

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace Test
 7 {
 8     class Start
 9     {
10         public static void Main()
11         {
12             Tool.Fan fan = new Tool.Fan();
13             fan.Rotating += new Tool.RotatingEventHander(fan_Rotating);
14             fan.PowerOn();
15         }
16 
17         static void fan_Rotating(object sender, Tool.RotatingEventArgs e)
18         {
19             Tool.Fan fan = (Tool.Fan)sender;
20             Console.WriteLine("The brand name of this product: {0}.\nPlace of production: {1}.",fan.BrandName,fan.PlaceOfProduction);
21             Console.Write("\n");
22             Console.WriteLine("This fan is power on now.");
23             Console.WriteLine("Current speed is {0}\nCurrent power is {1}.", e.Speed, e.Power);
24             Console.Write("\n");
25             e.Cancel = true;
26             Console.WriteLine("This fan is power off now.");
27             Console.WriteLine("Current speed is {0}.\nCurrent power is {1}.", e.Speed, e.Power);
28             Console.ReadKey();
29         }
30     }
31 }
32 
33 namespace Tool
34 {
35     public class RotatingEventArgs : EventArgs //监视对象转动中的一些数据
36     {
37         private int _speed;//转速
38         public int Speed
39         {
40             get
41             {
42                 return _speed;
43             }
44         }
45         private int _power;//功率
46         public int Power
47         {
48             get
49             {
50                 return _power;
51             }
52         }
53         private bool _cancel = false;//是否取消该转动
54         public bool Cancel
55         {
56             set
57             {
58                 _cancel = value;
59                 if (_cancel == true)
60                 {
61                     _speed = 0;
62                     _power = 0;
63                 }
64             }
65             get
66             {
67                 return _cancel;
68             }
69         }
70         public RotatingEventArgs() //构造函数
71         {
72             _speed = 2300;
73             _power = 5;
74         }
75     }
76 
77     //定义委托
78     public delegate void RotatingEventHander(object sender, RotatingEventArgs e);
79     public class Fan //监视对象
80     {
81         //定义事件
82         public event RotatingEventHander Rotating;
83 
84         protected virtual void OnRotating(RotatingEventArgs e)
85         {
86             if (Rotating != null)//事件方法注册
87             {
88                 Rotating(this, e);
89             }
90         }
91         public void PowerOn()
92         {
93             RotatingEventArgs e = new RotatingEventArgs();
94             OnRotating(e);
95         }
96         public readonly String BrandName = "CNC";
97         public readonly string PlaceOfProduction = "Guangzhou,China";
98     }
99 }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏c#开发者

Add a FileUpload control to your GridView [转]

Add a FileUpload control to your GridView Category:  ASP.Net 2.0 ...

3566
来自专栏我和未来有约会

xml-rpc(1)-first demo

今天简单的研究了一下xml-rpc,做了一个小demo,使得最近开发的一个blog系统可以试用word2007来发表文章,现在还没有具体的实现,只是试Word能...

1749
来自专栏葡萄城控件技术团队

Table-values parameter(TVP)系列之二: 利用DataTable将其作为参数传给SP

一,回顾         上一部分讲述了“在T-SQL中创建和使用TVP”,通过T-SQL建立如下的对象:         1)Tables ...

1879
来自专栏菩提树下的杨过

无限级分类(非递归算法/存储过程版/GUID主键)完整数据库示例_(3)删除记录

-- ============================= -- Author:  <杨俊明,Jimmy.yang@cntvs.com or yjmyz...

1898
来自专栏WindCoder

Python Class Attributes: An Overly Thorough Guide

I had a programming interview recently, a phone-screen in which we used a collab...

291
来自专栏向治洪

android smartbar适配

1.使用魅族的demo里的SmartBarUtils.java 2.在mainifest中的Application  android:theme="@...

1736
来自专栏听雨堂

数据库常规操作

   string a="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\data.mdb;Persist S...

1929
来自专栏菩提树下的杨过

几种常见复合sql查询语句的linq写法[继续补充中]

1.IN 语句 尝试了很多次,好象linq死活不生成in语句,无奈只能做了下变换 例,要找出"手机大类"以及"手机下属所有子类"的产品 (手机大类的ID为D0...

2066
来自专栏Java Edge

代理模式定义和类型使用场景优点缺点扩展2 实战源码分析

541
来自专栏小特工作室

基于JQuery EasyUI的WebMVC控件封装(含源码)

  JQuery EasyUI类库,大家不会陌生,出来已经有很多年了。个人感觉还是很好用的,作者更新频率也很快,bug也及时修复。   最近在整理以前的代码,找...

26810

扫码关注云+社区