Let's go

委托和事件

1、委托

复制代码
namespace ConsoleApp1
{
    class Program
    {
        public delegate void Del(string message);

        static void Main(string[] args)
        {
            Del hanld = new Del(DelegateMethod);
            MethodWithCallback(1, 2, hanld);
            Console.Read();
        }

        public static void DelegateMethod(string message)
        {
            Console.WriteLine(message);
        }

        public static void MethodWithCallback(int param1, int param2, Del callback)
        {
            callback(string.Format("当前的值为:{0}", (param1 + param2)));
        }

    }
}
复制代码

结果:

 

 

2、事件

复制代码
namespace ConsoleApp1
{
    public class PublishEvent
    {
        public delegate void NoticeHandler(string message);

        public event NoticeHandler NoticeEvent;

        public void Works()
        {
            //触发事件
            OnNoticed();
        }

        protected virtual void OnNoticed()
        {
            if (NoticeEvent != null)
            {
                //传递事件及参数
                NoticeEvent("Notice发布的报警信息!");
            }
        }
    }

    public class SubscribEvent
    {
        public SubscribEvent(PublishEvent pub)
        {
            //订阅事件
            pub.NoticeEvent += PrintResult;
        }

        /// <summary>
        /// 订阅事件后的响应函数
        /// </summary>
        /// <param name="message"></param>
        void PrintResult(string message)
        {
            Console.WriteLine(string.Format("已收到{0}!采取措施!", message));
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            PublishEvent publish = new PublishEvent();
            SubscribEvent subscrib = new SubscribEvent(publish);
            //触发事件
            publish.Works();
            Console.Read();
        }
    }

}
复制代码

结果:

 

 

 

 

借鉴:https://blog.csdn.net/qq_41872328/article/details/121333505

 

posted @   chenze  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2021-07-13 JAVA笔记
2019-07-13 DataTable 转 IEnumerable
2018-07-13 实时通讯与非实时通讯
有事您Q我
点击右上角即可分享
微信分享提示