• C#委托


    委托(delegate)是C#1.0就出现的一个技术,委托就是将方法囊括其中,可以将委托看做一个类的接口,但是在通过Lambda表达式的加入后,委托的实现就像对容易了很多。

    委托的构成:4方面

    1.声明委托类型:就是定义delegate;

    2.必须有需要执行的代码:就是要注册到委托里的方法;

    3.创建委托实例:注册到委托;

    4.执行invoke委托实例;

    lambda表达式的出现就能简略后面2,3,4步,在实现委托的时候可以使用更加方便。

    using System;
    
    namespace DelegateAndEvent
    {
        //定义一个事件类
        public class MyEvent
        {
            //定义一个委托
            public delegate void MyDelegate();
            //定义一个事件
            public MyDelegate MyDelegateEvent;
            //定义一个触发事件的函数
            public void OnMyDelegateEvent()
            {
                //判断事件是否非空
                if (MyDelegateEvent != null)
                {
                    //执行事件
                    MyDelegateEvent();
                }
                //MyDelegateEvent?.Invoke(); //简化的判断和执行
            }
        }
        class Program
        {
    
            //输出一串字符
            public static void putOutChar()
            {
                Console.WriteLine("I was fired");
            }
            //输出第二串字符
            public static void putOutChar2()
            {
                Console.WriteLine("I was fired22222");
            }
    
            static void Main(string[] args)
            {
                //实例化MyEvent2类
                MyEvent myEvent = new MyEvent();
                //注册一个事件
                myEvent.MyDelegateEvent += new MyEvent.MyDelegate(putOutChar);
                myEvent.MyDelegateEvent += new MyEvent.MyDelegate(putOutChar2);
                //执行触发事件的函数
                Console.WriteLine("执行绑定了两个事件后的函数");
                //调用事件(启动事件)
           myEvent.OnMyDelegateEvent();
    //解绑一个事件 myEvent.MyDelegateEvent -= new MyEvent.MyDelegate(putOutChar); //再次执行触发事件的函数 Console.WriteLine("执行解绑了一个事件后的函数"); myEvent.OnMyDelegateEvent(); Console.ReadKey(); } } }
  • 相关阅读:
    互联网协议入门详解(转)
    文件流结尾的EOF详解
    数字签名是什么?
    SSL/TLS协议运行机制的概述(转)
    图解SSL/TLS协议(转)
    RSA算法原理(转)
    HTML代码简写法:Emmet和Haml(转)
    HTML Email 编写指南(转)
    PHP CodeBase: 判断用户是否手机访问
    Spring Data JPA之Derived query
  • 原文地址:https://www.cnblogs.com/liuyang95/p/11660963.html
Copyright © 2020-2023  润新知