• 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(); } } }
  • 相关阅读:
    包装类
    String、Date、Calendar的转换
    枚举enum
    mybatis纵览
    postman编程
    postman导出Collection文件
    host头攻击
    maven处理jar包冲突
    jdk版本与项目依赖jar包不兼容
    linux安装jdk脚本
  • 原文地址:https://www.cnblogs.com/liuyang95/p/11660963.html
Copyright © 2020-2023  润新知