差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录 前一修订版 | |||
| csharp:系统关键字 [2025/11/28 11:12] – [4. 静态 (static)] 张叶安 | csharp:系统关键字 [2025/11/28 11:12] (当前版本) – [5. Event (事件) 关键词] 张叶安 | ||
|---|---|---|---|
| 行 144: | 行 144: | ||
| === 1. 核心概念 === | === 1. 核心概念 === | ||
| - | * **发布者 (Publisher)**:定义事件并决定何时触发事件的类。 | + | |
| - | * **订阅者 (Subscriber)**:监听事件并在事件触发时执行特定操作的类。 | + | * **订阅者 (Subscriber)**:监听事件并在事件触发时执行特定操作的类。 |
| - | * **委托 (Delegate)**:事件底层的类型安全函数指针,定义了事件处理程序的签名。 | + | * **委托 (Delegate)**:事件底层的类型安全函数指针,定义了事件处理程序的签名。 |
| === 2. 语法结构 === | === 2. 语法结构 === | ||
| 行 236: | 行 236: | ||
| === 4. 关键点总结 === | === 4. 关键点总结 === | ||
| - | * **封装性**:`event` 关键词为委托实例提供了一层封装。在类的外部,客户端只能使用 `+=` (订阅) 和 `-=` (取消订阅),而不能直接使用 `=` 赋值(这会覆盖其他订阅者)或直接调用 `Invoke()`。 | + | |
| - | * **空检查**:在触发事件前,务必检查事件是否为 `null`(即是否有订阅者),C# | + | * **空检查**:在触发事件前,务必检查事件是否为 `null`(即是否有订阅者),C# |
| - | * **命名规范**:事件通常命名为 `Name` 或 `OnName`,处理方法通常命名为 `OnName`。 | + | * **命名规范**:事件通常命名为 `Name` 或 `OnName`,处理方法通常命名为 `OnName`。 |