委托和事件(一)

委托和事件

委托和事件在 C# 中是非常重要的,如果不能掌握这两种方法,那么就永远不能成为一个好的 C# 程序员。而委托和事件则属于会者不难,难者不会的情况。

C# 委托(Delegate)

我们就先讲委托,暂时不要提及事件,虽然事件是委托的高级抽象,如果将两者一起讲,初学者不容易理解。

  1. C# 中的委托(Delegate)类似于 C 或 C++ 中函数的指针。委托(Delegate) 是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。
  2. 委托(Delegate)特别用于实现事件和回调方法。所有的委托(Delegate)都派生自 System.Delegate 类

如果了解C 或 C++ 中的指针,那么相对来说委托就很简单了,当然也会有一部分同学没有接触过 C 或 C++,那我先说用简单易懂的方式来解释一下上面过于委托的定义。

我们可以将 委托 理解成类似 string 一样的类型,string类型的变量可以存储字符串,那么委托 的变量就可以存储** 函数** 。而在代码运行的时候,我们可以改变委托类型的变量值。(这一点不理解的话,看了后面的代码演示就很清楚了)

声明委托(Delegate)

委托声明决定了可由该委托引用的方法。委托可指向一个与其具有相同标签的方法。

声明一个委托,和声明一个string类型是一样的。

public delegate int MyDelegate (string s);

delegate 是委托的类型,MyDelegate 是委托的命名。该委托可被用于引用任何一个带有一个单一的 string 参数的方法,并返回一个 int 类型变量。

using System;
namespace DeletegateAndEvent
{
	public delegate int MyDeletegate(string s);
	class MainClass
	{
		public static void Main (string[] args)
		{
			MyDeletegate myDelegate = PrintInfo;
			myDelegate += PrintInfo2;
			myDelegate ("委托就是这么用的!");
		}

		public static int PrintInfo(string s)
		{
			Console.WriteLine (s);
			return 10;
		}

		public static int PrintInfo2(string s)
		{
			Console.WriteLine (s+"2");
			return 10;
		}
	}
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值