码迷,mamicode.com
首页 > Windows程序 > 详细

C#基础-委托与事件

时间:2019-04-08 18:48:47      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:传递   ring   实例化   声明   gate   ace   案例   return   stat   

委托

delegate是申明委托的关键字
返回类型都是相同的,并且参数类型个数都相同

委托声明

delegate double DelOperater(double num1, double num2);

实例化委托对象

class Program
{
    static void Main(string[] args)
    {
       DelOperater delOp = new DelOperater(Add);
    }

    static double Add(double a,double b)
    {
        return a + b;
    }
}

委托的调用

double r1 = delOp.Invoke(3, 5);     // 第一种方法
double r2 = delOp(3, 5);            // 第二种方法

委托增加指向方法

delOp += new DelOperater(Sub);  // 减法被传递进来

委托去除指向方法

delOp -= new DelOperater(Sub);  // 减法被移出去

案例:关于加减乘除的委托,它的返回值都是double类型,并且都有两个double的参数

namespace ConsoleApp7
{
    // delegate是申明委托的关键字
    // 关于加减乘除的委托,它的返回值都是double类型,并且都有两个double的参数
    delegate double DelOperater(double num1, double num2);
    class Program
    {
        static void Main(string[] args)
        {
            // 使用委托的时候需要实例化委托对象
            // 在实例化委托时,会把方法名作为一个参数传进来,
            DelOperater delOp = new DelOperater(Add);
            // 在调用委托时,实际上调用的是委托指向的方法
            double r1 = delOp.Invoke(3, 5);
            Console.WriteLine("委托调用的方法的执行结果:" + r1);
            double r2 = delOp(3, 5);
            Console.WriteLine("委托调用的方法的执行结果:" + r2);
            delOp += new DelOperater(Sub);  // 减法被传递进来
            double r3 = delOp.Invoke(3, 5);
            Console.WriteLine("委托调用的方法的执行结果:" + r3);
            double r4 = delOp(3, 5);
            Console.WriteLine("委托调用的方法的执行结果:" + r4);
        }

        static double Add(double a,double b)
        {
            return a + b;
        }
        static double Sub(double a,double b)
        {
            return a - b;
        }
    }
}

C#基础-委托与事件

标签:传递   ring   实例化   声明   gate   ace   案例   return   stat   

原文地址:https://www.cnblogs.com/carious/p/10672365.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!