zoukankan      html  css  js  c++  java
  • C# 委托

      委托就好像函数的指针,1.首先声明一个全局变量的委托 2.接着实例化一个委托对象,并使他指向一个方法 3.最后 调用该委托对象等同于调用该方法。

      使用+=是增加委托调用的方法,使用-=是减少委托调用的方法

      实际上+=相当于Delegate.Combine, -=相当于Delegate.Remove

    View Code
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace 委托测试
    {
        delegate void DGSayiHi(string name);
        class Program
        {
            static void Main(string[] args)
            {
                DGSayiHi sayhi = new DGSayiHi(SayChineseHi);
                sayhi += new DGSayiHi(SayEnglishHi);
                sayhi("春晓");
    
                Console.ReadLine();
    
            }
    
            static void SayChineseHi(string name)
            {
                Console.WriteLine("你好:" + name);
            }
    
            static void SayEnglishHi(string name)
            {
                Console.WriteLine("Hello:" + name);
            }
        }   
    }
    
    
    ===============================
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace 委托测试
    {
        delegate void DGSayiHi(string name);
        delegate void DGDo(string name);
        class Program
        {
            static void Main(string[] args)
            {
                DGSayiHi sayhi = new DGSayiHi(SayChineseHi);
                DGSayiHi sayhi2 = new DGSayiHi(SayEnglishHi);
                sayhi += sayhi2;
                
                sayhi("春晓");
                Console.ReadLine();
    
            }
    
            static void SayChineseHi(string name)
            {
                Console.WriteLine("你好:" + name);
            }
    
            static void SayEnglishHi(string name)
            {
                Console.WriteLine("Hello:" + name);
            }
        }
    }

      

      

      从上图我们可以看出,委托实际上是一个类,委托有一个委托变量methodPtr,methodPtr他是一个指针。他指向一个方法。

      委托里而有object[] methodList, 当需要+=多个委拖的时候,其他的方法就会加入到object数组中。

  • 相关阅读:
    Java必会之多线程
    第一周JVM核心技术-工具与GC策略
    JVM核心技术(第一篇)
    SpringCloudAlibaba使用seata做分布式事务
    Go中的interface(接口)
    快排与堆排
    优先队列原来不难!带你手写一个
    【LeetCode】557. 反转字符串中的单词 III
    【LeetCode】214. 最短回文串
    【LeetCode】17. 电话号码的字母组合(回溯)
  • 原文地址:https://www.cnblogs.com/cxeye/p/2749781.html
Copyright © 2011-2022 走看看