代码之家  ›  专栏  ›  技术社区  ›  Robert MacLean

如何向初学者解释事件?

  •  0
  • Robert MacLean  · 技术社区  · 15 年前

    使用.NET如何向初学者解释事件?

    我看过的大多数介绍书都是关于WinForms应用程序的,双击Designer和Viola中的按钮,你就有了一个活动。

    我不喜欢它,因为它不能解释幕后发生的事情,或者更复杂的事情,比如链接事件。

    是否有更好的方法来解释事件,以及我应该添加什么(例如链接、委托等)?

    9 回复  |  直到 15 年前
        1
  •  7
  •   Simon P Stevens    15 年前

    有一篇好文章 here . 它以“事件是一种机制,通过它类可以在事件发生时通知其客户机”。例如,当你点击一个按钮时,一个按钮点击事件通知会被发送到按钮所在的窗口。”我认为这很好地解释了事情。

        2
  •  5
  •   Binary Worrier    15 年前

    如果你在寻找真实世界的例子,你可以使用twitter/rss等。

    例如,你在Twitter上发布了一些东西,订阅你的订阅的任何人都会看到这个帖子。

    对象引发一个事件(=twitter post),任何处理该事件(=twitter subscribe)的方法都会执行。

    然后,您可以讨论如何设置处理程序(订阅帐户),为什么应该取消订阅等等,所有这些都是关于Twitter的。

        3
  •  2
  •   Hans Kesting    15 年前

    类似: 事件是一条“可能与之有关”的消息,表示发生了“某些事情”(F.I.单击按钮或计时器)。通过“处理程序”,您可以对该事件作出反应。 您可以订阅一个事件,以便在该事件发生时调用处理程序。多个类可以订阅单个事件。

        4
  •  1
  •   Guffa    15 年前

    事件就像一个拉绳装置。任何相互关联的人都可以在设备上附加一个字符串。当某个特定的事件发生时,该设备将拉字符串,这样,任何相互关联的人都会收到一个发生该事件的信号。

    :)

        5
  •  0
  •   Fredrik Mörk    15 年前

    事件是从一个物体发出的信号,用来通知外界已经发生或即将发生的事情(事件)。它为对象提供了一种机制,使其无需知道谁在听(或者是否有人在听)。

        6
  •  0
  •   maxwellb    15 年前

    事件是引发它的对象广播的内容:

    类比: 想一想井屋上的高水位警报灯。

    C: 这是system.windows.forms.button.click事件

    代理附加到此事件,它们关心此事件何时发生。

    类比: 他们就像维修人员,但可能不是来自下一个城镇的维修人员。

    C: 这是代码中的“单击时执行某些操作”方法。你首先关心的是 myButton.Click += new EventHandler( myButton_Click ) . 工人就是方法 myButton_Click( Object sender, EventArgs e ) 本身。多个worker方法可能“关心”同一事件。

        7
  •  0
  •   TFM    15 年前

    为什么是技术术语?

    现在有一个大家都知道的成语:

    http://www.glenbrook.k12.il.us/GBSSCI/PHYS/CLASS/newtlaws/u2l4a.html

        8
  •  0
  •   Despatcher    15 年前

    在Delphi中,我添加/定义并实现了额外的事件处理程序,因为我是在60年代长大的,所以我称之为“事件处理程序”。 偶然事件 “。 我认为这个词比“事件”更能形容它。所以这个比喻是这样的 偶然事件 “大多数情况下并没有计划,它们只是发生了——您通常不会将它们作为预先定义的程序执行路径的一部分进行编码——您必须等待它们发生。

    要参与或被邀请,你必须有合适的联系人。将自己添加到正在发生的通知列表(通过对象的事件方法)是一种确保自己成为正在发生的事件的一部分的方法…或者“这个对象发生了一件事”——你想不想参与进来。如果你想参与其中,请通知你的联系人,然后你就可以参加聚会了:)

    只有我心地善良的两便士:)

        9
  •  0
  •   quillbreaker    15 年前

    事件的一般用法,如大多数示例中的那些,可以用不使用事件和/或涉及与某种黑盒接口(system.web.page等)交互的实现替代。

    如果您真的想教某人事件,请找到一个场景,其中他们既是事件的生产者又是事件的消费者,并且这些事件比函数/方法调用提供了实质性的好处。如果你想了解事件,你不仅要掌握它们的作用,还要了解它们在哪里可以被利用。