属性委托和事件的区别

时间:2017-01-20 13:45:10

标签: c# delegates

event关键字创建了两个方法add_ *和remove_ *(它的工作方式类似于属性)。

有什么区别

public event MyDelegate event1;
public MyDelegate event2 { get; set; }

为什么要使用事件keyowrd?

1 个答案:

答案 0 :(得分:1)

一个原因是安全。如果您实施事件,例如delegate 字段

 public MyDelegate event2 { get; set; }

你将能够做危险的事情:

 MyObject test = new MyObject();

 // removing all listeners
 test.event2 = null; 
 // just a little typo `=` instead of `+=`
 // means now complete substitution of the listeners instead of adding one  
 test.event2 = myMethod;