using System; namespace ConsoleApp1 { class Program { // 定义委托,并引用一个方法,这个方法需要获取一个int型参数返回void internal delegate void Feedback(int value); static void Main(string[] args) { var a = 500 / 26000.00; StaticDelegateDemo(); InstanceDelegateDemo(); Console.ReadKey(); } /// /// 静态调用 /// private static void StaticDelegateDemo() { Console.WriteLine("---------委托调用静态方法------------"); Counter(1, 10, null); Counter(1, 10, new Feedback(FeedbackToConsole)); } /// /// 实例调用 /// private static void InstanceDelegateDemo() { Console.WriteLine("---------委托调用实例方法------------"); Program p = new Program(); Counter(1, 10, null); Counter(1, 5, new Feedback(p.InstanceFeedbackToConsole)); } /// /// 静态回调方法 /// /// private static void FeedbackToConsole(int value) { // 依次打印数字 Console.WriteLine("Item=" + value); } /// /// 实例回调方法 /// /// private void InstanceFeedbackToConsole(int value) { Console.WriteLine("Item=" + value); } /// /// 使用此方法触发委托回调 /// /// 开始 /// 结束 /// 委托引用 private static void Counter(int from, int to, Feedback fb) { for (int val = from; val <= to; val++) { // fb不为空,则调用回调方法 if (fb != null) { fb(val); } //fb?.Invoke(val); 简化版本调用 } } } }