C# 委托

 回调在日常开发中,很常见,区别于非托管C/C++的非成员函数,framework提供了委托这种类型安全的机制,来完成回调.示例如下:

    public class Program
    {
        public static void Start()
        {
            new Machine().Run();
        }
    }

    public class Machine
    {
        public delegate void WarnHandler(object obj, MachineWarnEventArgs args);

        public  void Run()
        {
            for (var i =0; i < 100; i++)
            {
                if (i == 66)
                {
                    new WarnHandler(Machine_Warn).Invoke(this, new MachineWarnEventArgs($"温度达到了{i}度"));
                }
            }
        }

        public static void Machine_Warn(object obj, MachineWarnEventArgs args)
        {
            Console.WriteLine($"警报,{args._param}");
        }

        public class MachineWarnEventArgs : EventArgs
        {
            public string _param;

            public MachineWarnEventArgs(string param)
            {
                _param = param;
            }
        }
    }

 

posted @ 2021-06-04 19:11  郑小超  阅读(79)  评论(0编辑  收藏  举报