C#练习委托、事件、事件处理
2024-08-31 04:58:11
控制台应用程序效果:
代码:
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();
}
}
}
最新文章
- Android中的复制粘贴
- ASCII 计算机码
- java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.widget.L(转)
- 树——axure线框图部件库介绍
- rest-work-eat-study-rest-work-eat or rest-rest-work-work-eat-eat..
- pip 安装 lxml等 出错 解决
- Memcached缓存系统介绍及安装
- 我的第一个python web开发框架(7)——本地部署前端访问服务器
- PHP实现excel
- 《Python黑帽子》_1设置Python环境安装wingIDE
- 13-JS中的面向对象
- 前端 HTML标签属性
- (11)模板语言-if判断
- 最小生成树算法(krustra+prime)
- C#-老生常谈的 值类型与引用类型
- OA项目(MVC项目)
- Python3:sqlalchemy对mysql数据库操作,非sql语句
- mysql-2 数据类型
- CTF-安恒19年二月月赛部分writeup
- Visual Studio 2010生成解决方案时,导致C盘空间越来越小
热门文章
- Android学习(十) SQLite 基于SQLiteOpenHelper的操作方式
- 【转】oracle建立本地数据库
- UUID(即GUID)
- presentModalViewController方法,present一个透明的viewController,带动画效果
- poj 3468 A Simple Problem with Integers 【线段树-成段更新】
- python 读写数据
- js删除cookie的方法
- 基于JT/T 1078协议设计和开发部标视频服务器
- 基于日志处理的ElasticSearch的学(gen)习(feng)
- HDFS源码分析数据块复制选取复制源节点