面向对象(委托)

委托

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

定义在类的最外面

 

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

        }

 

 

    }

转载于:https://www.cnblogs.com/kun-boke/p/5764791.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值