控制台应用程序效果:

代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace MyEventTest
{
class Program
{
/// <summary>
/// 第一步 新建委托需要的带参数的类,属于事件的参数的子类
/// </summary>
public class MyClassEventArgs : EventArgs
{
private string name; public string Name
{
get { return name; }
set { name = value; }
}
private int age; public int Age
{
get { return age; }
set { age = value; }
} } /// <summary>
/// //第二步 新建一个带参数的委托
/// </summary>
/// <param name="sender">触发源</param>
/// <param name="mc">参数</param>
public delegate void MyDelegate(object sender,MyClassEventArgs mc); /// <summary>
/// 第三步 新建一个会触发事件的类
/// </summary>
public class Custom
{
/// <summary>
/// 第四步 新建一个委托发生时触发的事件
/// </summary>
public event MyDelegate Shout; private string name; public string Name
{
get { return name; }
set { name = value; }
}
private int age; public int Age
{
get { return age; }
set { age = value; }
} public Custom()
{ } public Custom(string n, int a)
{
name = n;
age = a;
} public void Buy()
{
Console.WriteLine("{0}:我要来买东西!",this.name); //第五步 在方法中关联事件
MyClassEventArgs mcea = new MyClassEventArgs();
mcea.Name = name;
mcea.Age = age;
if (Shout != null)
{
Shout(this,mcea);
}
}
} /// <summary>
/// 第六步 新建一个事件发生后要执行的类
/// </summary>
public class Reporter
{
public void Notify(object sender, MyClassEventArgs mcea)
{
Console.WriteLine("老板:小白快去接客了,客户名字叫{0},年龄{1}岁",mcea.Name,mcea.Age);
}
} /// <summary>
/// 第七步 做一种触发事件的情况,并把事件和事件的处理关联起来
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
Custom c1 = new Custom("大美女",);
Reporter r1 = new Reporter(); c1.Shout +=new MyDelegate(r1.Notify); c1.Buy();
}
}
}

最新文章

  1. Android中的复制粘贴
  2. ASCII 计算机码
  3. java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.widget.L(转)
  4. 树——axure线框图部件库介绍
  5. rest-work-eat-study-rest-work-eat or rest-rest-work-work-eat-eat..
  6. pip 安装 lxml等 出错 解决
  7. Memcached缓存系统介绍及安装
  8. 我的第一个python web开发框架(7)——本地部署前端访问服务器
  9. PHP实现excel
  10. 《Python黑帽子》_1设置Python环境安装wingIDE
  11. 13-JS中的面向对象
  12. 前端 HTML标签属性
  13. (11)模板语言-if判断
  14. 最小生成树算法(krustra+prime)
  15. C#-老生常谈的 值类型与引用类型
  16. OA项目(MVC项目)
  17. Python3:sqlalchemy对mysql数据库操作,非sql语句
  18. mysql-2 数据类型
  19. CTF-安恒19年二月月赛部分writeup
  20. Visual Studio 2010生成解决方案时,导致C盘空间越来越小

热门文章

  1. Android学习(十) SQLite 基于SQLiteOpenHelper的操作方式
  2. 【转】oracle建立本地数据库
  3. UUID(即GUID)
  4. presentModalViewController方法,present一个透明的viewController,带动画效果
  5. poj 3468 A Simple Problem with Integers 【线段树-成段更新】
  6. python 读写数据
  7. js删除cookie的方法
  8. 基于JT/T 1078协议设计和开发部标视频服务器
  9. 基于日志处理的ElasticSearch的学(gen)习(feng)
  10. HDFS源码分析数据块复制选取复制源节点