回调在日常开发中,很常见,区别于非托管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; } } }
原文:https://www.cnblogs.com/GreenLeaves/p/14850931.html