• 章节:156
  • 访问:1214
  • 时长:00:13:15
  • 日期:2016-10-08 02:40

先听听委托的定义:

委托是一种可以把引用存储为函数的类型;

是不是很难理解。。

其实其机制是非常简单的,委托的最重要的用途是为了后面的事件处理的

委托,先抛开编程,单单字面意思就是,托付交给某某做某事,那么在编程里面,委托也是意思委托某个函数说某事

委托的声明

1 类似函数的定义

2 不带函数体 分号;结束

3 前面加上delegate关键字

说白了就是没有函数体的函数,再在前面加上delegate


定义了委托类型后,就可以声明该委托的变量了,下面易例子来讲

定义委托和两个相同函数

delegate double DealDelegate(double d1,double d2);

static double Multiply(double p1,double d2)
{
    return d1 * d2;
}

static double Divide(double d1,double d2)
{

    return d1/d2;
}

调用的时候

DealDelegate del;
del = new DealDelegate(Multiply);
double res = del(2.2,3.4);
del = new DealDelegate(Divide);
res = del(3.3,4.4);

根据传入的函数类型,决定委托是什么,委托的使用就和函数的调用一样

有了委托,我们就可以根据一些条件,来决定使用哪个函数,我们要做的只是改变传入的函数名,比如上面的,我们可以更具条件选择new不同的委托,这样就相当于委托不同的函数来实现不同的功能


namespace Demo41
{    //北盟网校 www.bamn.cn    class Program
    {        delegate double MyDeletegate(double d1, double d2);//定义委托
        static double Mult(double d1, double d2)
        {            return d1 * d2;
        }        static double Div(double d1, double d2)
        {            return d1 / d2;
        }        static void Main(string[] args)
        {            //声明一个委托            MyDeletegate md;
            md = new MyDeletegate(Mult);//委托的参数就是传入函数名            Console.WriteLine(md(1, 2));//这里面md就相当于mult一样            md = new MyDeletegate(Div);
            Console.WriteLine(md(1, 2));//这里面md就相当于div一样            Console.ReadKey();
        }
    }
}