前言
写这么多年 C#, 我从来没有写过 EventHandler. 我想应该是因为我没有用 C# 开发过前端的关系, 绝对不是我技术不行哦.
这篇就补上一个学习笔记呗.
参考
C#知识点讲解之C#delegate、event、Action、EventHandler的使用和区别
介绍
EventHandler 就是观察者模式的实现, 你可以把它完全当作前端 DOM addEventListener 去理解. (当然前端的还有冒泡概念, 会更加复杂一点)
delegate
在理解 EventHandler 之前, 要先了解什么是 delegate (委托).
C# 不像 JS 那样, 函数一等公民. 天生就可以当变量, 参数使用.
在 C# 函数通常是作为类的方法来使用的, 传递的变量, 参数则是对象, 而不是函数(方法).
而 delegate 则赋予了 C# 直接传递函数的能力. 函数变一等公民了.
看代码理解
// 定义函数类型 public delegate void MyMethod(string name, int age); public class MyClass { // 参数是一个函数 public void Run(MyMethod myMethod) { myMethod("name", 11); } } public static class Program { public static void Main() { var myClass = new MyClass(); // 变量是一个函数 MyMethod myMethod = (name, age) => { Console.Write($"{name}, {age}"); }; myClass.Run(myMethod); } }