• 委托之初识(一)


    一、委托:也是一个类,继承自System.MulticastDelegate。可以理解为:A想找个女朋友(C),B是婚介所,A委托B帮忙能找到C。

    二、示例:

     1  //定义一个带有参数的委托,委托的参数类型要跟AppleCompany类中的四个方法保持一致,都是Int32类型,委托其实就是个类,一般为了调用方便都声明在命名空间Delegate_01中.
     2     public delegate void Dele(Int32 num);    
     3     class Program
     4     {     
     5         static void Main(string[] args)
     6         {
     7             DigitalFactory df = new DigitalFactory();
     8             df.MakeDigitals(AppleCompany.MakeIphone, 200);
     9             df.MakeDigitals(new AppleCompany().MakeIpad, 200);
    10             df.MakeDigitals(new AppleCompany().MakeImac, 200);
    11             df.MakeDigitals(new AppleCompany().MakeIpod, 200);
    12         }
    13     }
    14 
    15     //在DigitalFactory创建一个带有委托参数的方法,用来传递方法,然后通过委托调用具体方法
    16     public  class DigitalFactory
    17     {
    18         public  void MakeDigitals(Dele dele, Int32 Number)
    19         {
    20             if (dele != null)
    21             {
    22                 dele(Number);
    23                 Console.WriteLine("Target:" + dele.Target + ",Method:" + dele.Method.Name);
    24             }
    25         }
    26     }
    27 
    28     //在AppleCompany类,有个四个方法。
    29     public class AppleCompany
    30     {
    31         public static void MakeIphone(int num)
    32         {
    33             Console.WriteLine(num + "台Iphone 已生产出来");
    34         }
    35 
    36         public void MakeIpad(int num)
    37         {
    38             Console.WriteLine(num + "台Ipad 已生产出来");          
    39         }
    40 
    41         public void MakeImac(int num)
    42         {
    43             Console.WriteLine(num + "台Imac 已生产出来");         
    44         }
    45 
    46         public void MakeIpod(int num)
    47         {
    48             Console.WriteLine(num + "台Ipod 已生产出来");
    49             Console.Read();
    50         }
    51     }
    View Code

    结果:

    三、绑定多个方法

     1         static void Main(string[] args)
     2         {
     3             DigitalFactory df = new DigitalFactory();
     4             //委托绑定多个方法。
     5             Dele deles = new Dele(AppleCompany.MakeIphone);
     6             deles += new AppleCompany().MakeIpad;
     7             deles += new AppleCompany().MakeImac;
     8             deles += new AppleCompany().MakeIpod;
     9             df.MakeDigitals(deles,200);
    10         }
    View Code

    结果:

       下载源代码

  • 相关阅读:
    springBoot 与 springMVC的区别
    spring的IOC和AOP
    实现同步的三种方法
    台阶积水问题
    requsets模块和beautifulsoup模块
    爬虫
    rabbitMQ 消息队列
    Django框架
    mysql
    jQuery
  • 原文地址:https://www.cnblogs.com/luyuwei/p/3628778.html
Copyright © 2020-2023  润新知