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数组中。

  • 相关阅读:
    MySQL5.6 community从下载到安装
    SVN使用
    VIsualSVN server 安装及旧仓库导入
    在VisualSVN创建新的Repository
    MFC用PostMessage传递消息
    Postgresql命令行和数据库备份与恢复
    makefile复习时发现的编写makefile规则注意事项
    js IDE WebStorm 注册码
    mysql学习笔记之基础篇
    c++继承详解
  • 原文地址:https://www.cnblogs.com/cxeye/p/2749781.html
Copyright © 2011-2022 走看看