C#委托和事件程序具体案例
时间: 2023-07-12 14:18:33 浏览: 143
下面是一个使用委托和事件的具体案例:
1. 声明委托类型和事件
```csharp
public delegate void PriceChangedEventHandler(decimal oldPrice, decimal newPrice);
public class Stock
{
private decimal _price;
public event PriceChangedEventHandler PriceChanged;
public decimal Price
{
get { return _price; }
set
{
if (_price != value)
{
decimal oldPrice = _price;
_price = value;
OnPriceChanged(oldPrice, _price);
}
}
}
protected virtual void OnPriceChanged(decimal oldPrice, decimal newPrice)
{
PriceChanged?.Invoke(oldPrice, newPrice);
}
}
```
2. 创建委托对象和事件处理程序
```csharp
public class Trader
{
public void OnPriceChanged(decimal oldPrice, decimal newPrice)
{
if (newPrice > oldPrice)
{
Console.WriteLine("Buy!");
}
else if (newPrice < oldPrice)
{
Console.WriteLine("Sell!");
}
else
{
Console.WriteLine("Hold!");
}
}
}
Trader trader = new Trader();
Stock stock = new Stock();
stock.PriceChanged += new PriceChangedEventHandler(trader.OnPriceChanged);
```
3. 触发事件
```csharp
stock.Price = 50;
```
在上面的例子中,当股票价格发生变化时,会触发PriceChanged事件,并且调用事件处理程序OnPriceChanged。在这个例子中,事件处理程序只是简单地输出“Buy!”、“Sell!”或“Hold!”,但实际上事件处理程序可以执行任何操作,例如更新UI或执行业务逻辑。
通过使用委托和事件,我们可以实现松耦合的设计,使得不同的组件可以独立地开发和测试,并且可以方便地进行扩展和维护。
阅读全文