事件如何比委托更可靠
本文关键字:何比委 事件 | 更新日期: 2023-09-27 18:32:47
请考虑以下示例。
Stock
班每PriceChanged
都会发射其事件股票价格变化的时间:
public delegate void PriceChangedHandler (decimal oldPrice,decimal newPrice);
public class Stock
{
string symbol;
decimal price;
public Stock (string symbol) { this.symbol = symbol; }
public event PriceChangedHandler PriceChanged;
public decimal Price
{
get { return price; }
set
{
if (price == value) return; // Exit if nothing has changed
if (PriceChanged != null) // If invocation list not empty,
PriceChanged (price, value); // fire event.
price = value;
}
}
}
如果我们从示例中删除 event 关键字,以便PriceChanged
变成普通委托字段,我们的示例将给出相同的结果。但是,Stock
会不那么健壮,
我的问题是事件关键字如何使股票更加强劲?
我的问题是事件关键字如何使股票更加强劲?
这完全取决于班外的客户可以做什么。如果这只是一个公共领域,那么任何人都可以:
- 自行调用所有现有处理程序
- 移除/替换所有现有处理程序
相反,通过使用事件,其他代码只能订阅该事件或取消订阅该事件。我不会使用"健壮"这个词来描述这种差异 - 这是一个封装问题,并表达其他代码应该能够对Stock
实例做什么。
有关更多信息,请参阅我关于代表和活动的文章。