原文地址:http://blog.monstuff.com/archives/000040.html

我们在以前的文章中看到了委托以及它们的实现。但是如果你在网页上搜索有关委托的信息,你肯定会注意到它们总是与“event”结构相关联。
联机事件教程使得事件尽管与常规的委托实例有关系,但是还是有许多区别。事件经常被解释得就好像它们是一种特殊的类型或结构。但是我们将看到它们只是委托类型的一种修饰器,它们仅仅是添加了一些编译器强制执行的限制和两个存取器(与属性的get和set相似)。

首先看看事件 vs 常规委托
当我完成了前一篇关于委托的文章时,另一个C#构造也进入了我的计划:事件。事件看起来确实与委托有关,我没能找出它们之间的不同。

从它们的语法看来,事件就好像是一个留有代表多播委托的委托组合字段。它们同样支持委托的(+和-)组合操作。
在接下来的例子程序(没有任何有用的功能)中,我们将看见msgNotifier(使用event结构)和msgNotifier2(普通委托)看起来有个一致的意图和目的。

namespace EventAndDelegate
{
  
delegate void MsgHandler(string s);

  
class Class1
  {
   
public static event MsgHandler msgNotifier;
   
public static MsgHandler msgNotifier2;
   [STAThread]
   
static void Main(string[] args)
   {
    Class1.msgNotifier 
+= new MsgHandler(PipeNull);
    Class1.msgNotifier2 
+= new MsgHandler(PipeNull);
    Class1.msgNotifier(
"test");
    Class1.msgNotifier2(
"test2");
   }
 
   
static void PipeNull(string s)
   {
    
return;
   }
  }
}

相关文章:

  • 2021-07-13
  • 2021-11-10
  • 2022-03-11
  • 2022-12-23
  • 2022-12-23
  • 2021-05-16
  • 2021-05-17
猜你喜欢
  • 2022-01-31
  • 2021-09-04
  • 2022-12-23
  • 2021-05-21
  • 2021-08-01
相关资源
相似解决方案