C#委托

 

C#中的delegate和C++中的函数指针基本是一回事,C#正是以delegate的形式实现了函数指针。不同的地方在于C#中delegate是类型安全的。
    如果没有C或者C++的背景知识也没有一点关系。
    要理解Delegate,首先,你要明白,它是一个类,他和Class是一个级别的概念,不同在于Class的定义包含字段和方法,而delegate只包含方法的细节。
     定义Delegate:
       public delegate bool CompareDelegate(int a, int b);

上面语句的含义是:定义了一个委托的实例时,这些实例都要包含一个方法名,并且这个方法必须有两个int型的参数,并且必须返回一个bool型的值。
     好,现在就创建一个上面定义的委托的实例
    public CompareDelegate myCompare = new CompareDelegate(CompareMethod);
   // public CompareDelegate myCompare = CompareMethod;    //这种写法也可以
里面的这个CompareMethod是一个方法: 定义如下: public static bool CompareMethod(int x , int y) { bool result = x > y ? true : false; return result; } 怎么使用呢 int a = 10; int b = 15; bool isBigger = myDelegate(a, b); 下面是完整的代码: using System; using System.Collections.Generic; using System.Text; using Common; namespace ConsoleApplication8 { //定义委托 public delegate bool CompareDelegate(int a, int b); public class MyCompare { /// <summary> /// 定义一个方法,符合上面定义的委托所要求的方法细节,返回值为bool型,两个参数分别为int型 /// </summary> /// <param name="x"></param> /// <param name="y"></param> /// <returns></returns> public static bool CompareMethod(int x , int y) { bool result = x > y ? true : false; return result; } } class Program { static void Main(string[] args) { //实例化委托并初始化。注意初始化时候,必须包含一个方法的名称,而且这个方法必须符合最初定义委托时候的签名(参数类型和返回值) CompareDelegate myDelegate = new CompareDelegate(MyCompare.CompareMethod); //现在我们使用委托实例来比较两个数a和b的的大小 int a = 10; int b = 15; bool isBigger = myDelegate(a, b); Console.WriteLine(" a > b ?: " + isBigger); Console.Read(); } } } 是不是太简单了。 C#中委托用来干什么呢,当然不是用来实现象上面那样的弱智程序。在C#中一提委托,一般就会引出另外一个术语:事件。C#中事件的实现,正是依赖于delegate。而事件又是一个很重要的概念,只有真正理解了委托,才能打好基础,真正的弄明白事件。
 
 
委托将方法灵活话,可以定义若干方法,想用哪个,就把哪个用委托方法new出来,并通过委托方法调用前边定义的方法。换句话说,相当于将具体方法改名为委托方法,程序通过委托方法的方法名来调用。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值