zoukankan      html  css  js  c++  java
  • 面向对象(委托)

    委托

    把方法参数化能够把方法作为参数传进函数也称为代理,事件也是一种委托;

    定义在类的最外面

     

    关键字:delegate

    函数签名:签名和函数保持一致

    定义委托的时候要根据函数来定义

    public delegate int First(int a,int b);

    指向的方法的返回类型,需要参数必须一致!

     

    2、定义委托变量,指向方法

     

    委托不能被实例化,因为不是类;

     

    First f = new JiaFa().JiaFa; //新建委托变量,指向方法,注意!!方法不需要小括号!!

     

    第二次可以使用+=

     

    public int JiaFa(int a,int b)

    {

           return a+b;

    }

     

    调用:

    f(5,3);

     

    可以理解为函数的指针,委托指向哪个函数,则这个委托就代表哪个函数

    可以让函数当做参数一样进行传递

     

    例:

        //定义委托

        public delegate void SuiBian(string s);

        class Program

        {

            static void Main(string[] args)

            {

               // Test t1 = new Test();

               //Test t2 = new Test();

                //DBDA db = DBDA.DuiXiang();

                //db.host = "localhost";

                //DBDA db1 = DBDA.DuiXiang();

                //委托

                //把方法参数化

                SuiBian s = China;

                s += America; //+=是绑定方法  -=去掉一个方法

                //事件

                //事件就是一种特殊的委托

                //调用语音方法

                Speak(s);

              

                Console.WriteLine();

                Console.ReadLine();

            }

            //语音功能的方法

            static void Speak(SuiBian yu)

            {

                yu("张三");

                //if (n == 0)

                //{

                //    America();

                //}

                //else if (n == 1)

                //{

                //    China();

                //}

                //else if (n == 2)

                //{

                //    HanYu();

                //}

       

            }

            //语音包

            public static void America(string s)

            {

                Console.WriteLine(s+"hello");

            }

            static void China(string s)

            {

                Console.WriteLine(s+"你好");

            }

            static void HanYu(string s)

            {

                Console.WriteLine(s+"bjdkaj");

            }

        }

  • 相关阅读:
    关于android中两种service的编写简单总结
    To learn list
    android中如何在系统启动的时候启动自己的service
    service的生命周期以及两种service的差异
    Intent的简单概述
    关于startactivity初始化activity的过程以及activity和window以及view的关系
    android activity生命周期的一张经典图片
    关于Android进程的启动和消亡
    Java基础学习总结(73)——Java最新面试题汇总
    Beetl学习总结(4)——Web集成
  • 原文地址:https://www.cnblogs.com/kun-boke/p/5764791.html
Copyright © 2011-2022 走看看