处理需要处理的事情
介绍
在编程中,事件是极有可能发生或有可能发生的事情。在现实生活中,如果我们想把它放在上下文中,当我们喝完最后一瓶牛奶时,我们的内心会告诉我们,如果下次想喝牛奶,我们需要买牛奶。如果我们吃了最后一片面包,我们需要去面包店再买一些。界限在哪里?如果没有剩余的面包,我们需要多久购买一次这些被消耗的东西?我们如何优化补充供应的过程?我们是否记下笔记并每周五下午去购物?我们是否预先计算下周所需的食物量,并尝试多储备一些以防万一?
这些现实生活中的问题描述了什么是事件以及我们如何确保在两次购物之间总是有足够的牛奶和面包。
代表
为了继续我们的旅程,我们需要了解代表的概念。
简单来说,委托是指向方法的指针或引用。这种方法允许我们像传递值一样传递它们。委托的神秘性很容易被揭穿,它最重要的特征或概念是签名(或形状)。
签名由两个重要部分组成:
- 返回值
- 输入参数
委托的外观以字符串作为参数,并且可以指向返回void的方法。
public delegate void MissingConsumableHandler(string name);
此事件将导致执行任何符合MissingConsumableHandler签名的方法。
public event MissingConsumableHandler OutOfMilk;
活动
现在我们知道如何创建委托,我们需要证明事件的存在。我们希望在牛奶用完时引发连锁反应。
让我们创建一些东西,以便在该事件触发时调用。
void HandleOutOfMilk(string name){
Console.WriteLine($"Adding {i} to the shopping list!");
Console.WriteLine($"Notifying Mom about the disaster!");
}
事件和我们期望执行的方法之间的纽带是委托。给定的事件必须在内部存储指向我们希望在事件引发时调用的方法的指针列表。为了做到这一点,我们需要知道要传递给它的参数!
简而言之,委托是方法列表和调用这些方法的事件之间的契约。
以下是将它们粘合在一起的方法:
Freezer.HandleOutOfMilk += new MissingConsumableHandler(HandleOutOfMilk)
为了引发此事件,我们只需要调用以下代码:
HandleOutOfMilk("3 bottles of milk")
结论
这就是全部了。我的目标是揭开主题背后的魔力。封面下的事件只不过是具有相同形状(签名)的方法列表。列表与事件共生;它们与事件一起存储。当引发事件时,所发生的事情就是迭代方法并使用特定参数调用。事件处理程序的分配只是视觉效果或添加要调用的方法列表的更漂亮的方式。这个演示可以进一步扩展以调用购物应用程序的外部API,甚至可以设置为智能冰箱以自动为我们处理东西。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~