首页 > 代码库 > C#之委托初步

C#之委托初步

    传说中的东西,今天兴趣来了,就研究了研究,把大概什么是委托,如何使用委托稍微梳理了一下。

1、什么是委托

   首先,Class(类)是对事物的抽象,例如,哺乳动物都是胎生,那么你可以定义一个哺乳动物的基类,然后一大片的驴,马,狗,猪都从这继承而去。

   委托可以认为是同一类函数(function,也叫做方法)的抽象,代表的一系列同返回类型,同形参列表的函数。

   委托是个类型,就像int之流的一种类型。一个委托类型的变量可以指向一串同类型的函数,到时候需要调用这一串函数的时候,就可以调用这个委托类型的变量来使这些函数执行。

2、如何使用委托:

    先定义一个类,里面包含了一些具体的方法

 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 //方法类就是需要实现具体功能的一些函数 6 namespace DelegateTest 7 { 8     class Hit 9     {10         public void hitxiaoming()11         {12             Console.WriteLine("xiaoming was hited \n");13         }14         public void hitdahong()15         {16             Console.WriteLine("dahong was hitted\n");17         }18         public void hitxiaoweng()19         {20             Console.WriteLine("xiaoweng was hitted\n");21         }22     }23 }
View Code

    在主程序中通过委托调用这三个函数,代码如下:

    主要分四步 声明委托类型,定义委托变量,绑定函数,调用委托

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace DelegateTest{    class Program    {        delegate void hitSomeBody();//声明一个委托类型(不是变量)此时,hitSomeBody相当于数据类型,例如int        private hitSomeBody hitone;//定义一个委托类型的变量,此时hitone是变量        private Hit hit = new Hit();        public void iniDelegate()        {            this.hitone += hit.hitdahong;//将函数绑定到委托变量中等效于hitone = new hitone(hitdahong);            this.hitone += hit.hitxiaoming;            this.hitone += hit.hitxiaoweng;            hitone();//执行委托        }        static void Main(string[] args)        {            Program p = new Program();           p.iniDelegate();        }           }}
View Code

 

C#之委托初步