zoukankan      html  css  js  c++  java
  • C# 委托的一些使用上的小技巧

    1、委托是一种数据类型,我们可以在任何定义类的地方定义委托,在任何声明类的地方声明委托

    2、初始化委托有两种方式,代码如下:

    (1)、像类一样初始化委托

    public delegate void SayHelloEventHandler(string _name);
    SayHelloEventHander sh = new SayHelloEventHander(ChineseSayHello);//创建了一个SayHelloEventHandler的实例,并给SayHelloEventHandler构造函数赋了初值ChineseSayHello
    private static void ChineseSayHello(string name)
    {
                
    }

    (2)、赋初值

    public delegate void SayHelloEventHandler(string _name);
    SayHelloEventHander handler;
    handler=new Program().ChineseSayHello;//通过赋初值的方式
    private void ChineseSayHello(string name)
    {
                
    }

    3、第一次初始化委托时,不能使用+=或者-=操作,只能使用2中提供的2中初始化委托的方式,否则编译其会报错。

    4、初始化化完委托之后,委托可以使用+=或者-=操作,因为一个委托可以绑定多个方法,具体是多少,每测过,你可以写个循环测下,代码如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Delegate
    {
        class Program
        {
            public delegate void SayHelloEventHandler(string name);
            static void Main(string[] args) {
                Program p = new Program();
                string n="张三";
                SayHelloEventHandler handler;
                handler = p.SayChHi;
                handler += p.SayChHi;
                handler += p.SayChHi;
                handler += p.SayChHi;
                handler += p.SayChHi;
                handler += p.SayChHi;
                handler += p.SayChHi;
                handler += p.SayChHi;
                p.SayHi(n, handler);
            }
            public void SayHi(string name,SayHelloEventHandler handler) {
                handler(name);
            }
            public void SayChHi(string name) {
                Console.WriteLine("你好 " + name);
                Console.ReadKey();
            }
            public void SayEnglishHi(string name) {
                Console.WriteLine("Hello " + name);
                Console.ReadKey();
            }
        }
    }

    绑定多次的结果就是执行多次绑定的方法,当前委托绑定了8个相同的方法,所以执行了8次同一个方法.

  • 相关阅读:
    JavaScript相关,this 的指向
    酷炫的渲染,CSS3动画!
    正襟危坐,聊一聊Web语义化
    本地存储的技术,localStorage、sessionStorage、cookie、session
    Express 系列(终章):MongoDB使数据持久化
    股票投资相关,成交量怎么看
    【日本語新聞選読】第5回:3月31日
    【1901日語听解2】第5回:3月30日
    【日語視聴説2】第5回:3月30日
    【日本語新聞編集】第4回:3月27日
  • 原文地址:https://www.cnblogs.com/GreenLeaves/p/6861186.html
Copyright © 2011-2022 走看看