[自学问题总结]委托与事件

委托,通熟易懂的举个例子:妈妈让小新去买东西

一 首先是C#语法

public delegate void BuyThingEventHandler();

delegate是关键字

EventHandler是一个声明委托的微软C#的命名标准

二 定义小新类

/// <summary>
/// 小新类
/// </summary>
private class CraYon
{
	public static void BuyThing()
	{
		Console.WriteLine("妈妈,东西买好了!");
	}
}

三 主方法

internal class Program
	{
		public delegate void BuyThingEventHandler();

		private static void Main(string[] args)
		{
			BuyThingEventHandler myDelegate = new BuyThingEventHandler(CraYon.BuyThing);

			myDelegate();
			Console.ReadKey();
		}
	}

BuyThingEventHandler myDelegate = new BuyThingEventHandler(CraYon.BuyThing);这个是委托声明方法。
注:委托的参数和返回值类型,都要和具体委托的方法一致:

public delegate void BuyThingEventHandler();


public static void BuyThing(){
Console.WriteLine("妈妈,东西买好了!");

}

四 委托链

简单描述为,妈妈让小新去买完东西后,还让他带小白去散步。

using System;

namespace test1
{
	internal class Program
	{
		public delegate void BuyThingEventHandler();

		private static void Main(string[] args)
		{
			//委托
			BuyThingEventHandler myDelegate = new BuyThingEventHandler(CraYon.BuyThing);
			myDelegate += CraYon.WalkDog;

			myDelegate();
			Console.ReadKey();
		}
	}

	/// <summary>
	/// 小新类
	/// </summary>
	public class CraYon
	{
		public static void BuyThing()
		{
			Console.WriteLine("妈妈,东西买好了!");
		}

		public static void WalkDog(){
			Console.WriteLine("妈妈,小狗散完步了,收集的大便给你!");
		}
	}
}

其实我们只是在程序中加了
myDelegate += CraYon.WalkDog;
这个委托就相当于做了两件事,先买东西再带小白散步。

 

五 委托与事件

事件是个实在的对象,而委托是个类型。比方说一个button按钮,你可以给它注册和注销click事件,但委托不行,委托是掉别人的方法,它无法注册自己和注销自己。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值