C# 委托、事件与 Lambda 表达式全解析
1. 事件基础与底层原理
在 C# 中,我们可以轻松配置一个类来发送自定义事件,而无需定义自定义注册函数或声明委托成员变量。例如,在汽车类中,我们可以根据汽车的速度状态触发不同的事件:
// Almost dead?
if (10 == MaxSpeed - CurrentSpeed
&& AboutToBlow != null)
{
AboutToBlow("Careful buddy! Gonna blow!");
}
// Still OK!
if (CurrentSpeed >= MaxSpeed)
carIsDead = true;
else
Console.WriteLine("CurrentSpeed = {0}", CurrentSpeed);
当编译器处理 C# 的 event 关键字时,会生成两个隐藏方法,一个以 add_ 为前缀,另一个以 remove_ 为前缀,后面跟着事件的名称。例如, Exploded 事件会生成 add_Exploded() 和 remove_Exploded() 两个隐藏方法。以下是 add_AboutToBlow() 的部分 CIL 代码:
.method pu
C# 委托、事件与 Lambda 解析
超级会员免费看
订阅专栏 解锁全文
37

被折叠的 条评论
为什么被折叠?



