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();
            }
        }
    }
  • 相关阅读:
    lower_bound &&upper_bound
    二分/三分
    $qsort$
    define
    typedef
    string
    queue
    nyoj Arbitrage (Bellman-Ford)
    nyoj 谍战 (最小割最大流)
    nyoj 网络的可靠性(。。。)
  • 原文地址:https://www.cnblogs.com/csdbfans/p/3293287.html
Copyright © 2011-2022 走看看