• 面向对象(委托)


    委托

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

    定义在类的最外面

     

    关键字: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");

            }

        }

  • 相关阅读:
    Java之泛型练习
    集合框架-Map练习-记录字母出现的次数
    集合框架Map之entrySet方法的使用
    集合框架Map之KeySet方法的使用
    Java集合框架之LinkedList-----用LinkedList模拟队列和堆栈
    springboot2.0+mycat实验读写分离
    mysql主从复制
    mycat读写分离
    kafka初探
    redis-List类型
  • 原文地址:https://www.cnblogs.com/kun-boke/p/5764791.html
Copyright © 2020-2023  润新知