zoukankan      html  css  js  c++  java
  • 我眼中的委托

    /** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** 

        一千读者心中有有一千个哈姆雷特,.Net中的委托也是一样。

        直白点讲委托的话,就是一种以方法为参数的传递方式概念我想是差不多了吧,毕竟概念这东西,只是书面语,没有实例那么容易理解。

        坦白说,我做了近两年的开发,还没有自己定义过委托,如果你说使用过.net框架里面已经封装的那就罢了,因为那是微软封装好的,我也不是大牛,没挖掘理解过。

        好歹是涉足这方面的菜鸟,一些基本功还是需要修炼好。常挤出一些时间来学习是必要的。尤其像微软的东西,知识的更新太频繁了。你永远学不到尽头,只能是不断上下求索(路漫漫其修远兮,吾将上下而求索)。

    **** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ***/

    使用委托可以概括如下几步:

    (1)定义委托  

      =》delegate int DelegateOperation(int firstNum, int secondNum);

    (2)定义跟委托相同签名的函数

     =》public int add(int firstNum, int secondNum)

     =》public int minus(int firstNum, int secondNum)

     =》说明:委托与函数的签名相同,此例是返回整型、传递两个整型的参数

    (3)声明委托,并将委托指向相同签名的函数

     =》常见写法一:DelegateOperation test =  new DelegateOperation(oper.add);

     =》特殊写法类似二: 委托类型 变量 += new 委托类型(注册的委托方法);

          DelegateOperation test +=  new DelegateOperation(oper.add);

          DelegateOperation test -=  new DelegateOperation(oper.add); 

      委托别人比较勤快,可以执行所谓的委托链(增加、减少委托)

           

    (4)执行委托,也就是调用委托指向的方法

     =》firstNum = test(100, 20);

     =》说明:其中变量test指向委托实例,DelegateOperation test = new DelegateOperation(oper.add);

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace DeleteTest
    {
    
        delegate int DelegateOperation(int firstNum, int secondNum);
    
        class Operation
        {
            public int add(int firstNum, int secondNum)
            {
                int result = firstNum + secondNum;
                return result;
            }
    
     
            public int minus(int firstNum, int secondNum)
            {
                int result = firstNum - secondNum;
                return result;
            }
        }
    
         class Program
        {
            static void Main(string[] args)
            {
                Operation oper = new Operation();
    
                 //求(100+20) + (100-20)
                int result = 0;
                int firstNum = 0;
                int secondNum = 0; 
    
                DelegateOperation test = null; 
    
                //求和
                  test = new DelegateOperation(oper.add);
                firstNum = test(100, 20);
    
                //求差
                  test = new DelegateOperation(oper.minus);
                secondNum = test(100, 20);
    
                 //再求和
                  result = test(firstNum, secondNum);
                Console.WriteLine(result);
                Console.ReadKey();
            }
        }
    }
  • 相关阅读:
    js,vue.js一些方法的总结
    confirm提示弹出确定和取消按钮
    移动端 meta 必备
    Vue.js总结 [2017.6.5]
    2017.6.5项目总结(移动端touch事件)
    微信公众平台接口开发(全面认识接口)
    数据库作业
    数据库子函数等
    判断一年是否为闰年
    数据库练习
  • 原文地址:https://www.cnblogs.com/csdbfans/p/3293287.html
Copyright © 2011-2022 走看看