如何在C#中创建一个商品类,并在价格变化时通过事件通知其他部分的代码?请提供详细的类设计和事件处理机制。
时间: 2024-11-21 19:33:40 浏览: 14
在C#中创建一个能够响应价格变化的事件通知的商品类,需要理解类的基本组成部分,包括构造函数、属性、事件和方法。以下是详细的类设计和事件处理机制:
参考资源链接:[C#编程:创建与使用商品类(Commodity)示例](https://wenku.csdn.net/doc/86bsqnc1kb?spm=1055.2569.3001.10343)
首先,定义`Commodity`类,包含必要的属性,如下所示:
```csharp
public class Commodity
{
// 构造函数
public Commodity(string id, string name)
{
Id = id;
Name = name;
}
// 只读属性
public string Id { get; }
public string Name { get; }
// 可读写属性
private decimal _price;
public decimal Price
{
get => _price;
set
{
if (_price != value)
{
_price = value;
// 触发价格变化事件
Change?.Invoke(this, EventArgs.Empty);
}
}
}
public string Address { get; set; }
}
```
在上面的代码中,`Price`属性包含了一个私有字段`_price`和两个访问器`get`和`set`。`set`访问器中,如果新值与当前值不同,则更新价格并触发`Change`事件。
接下来,定义事件和委托:
```csharp
// 事件委托定义
public delegate void PriceChangedEventHandler(object sender, EventArgs e);
// 事件定义
public event PriceChangedEventHandler Change;
```
`Change`是一个事件,当商品价格改变时,会通知所有订阅了该事件的方法。
然后,添加一个方法用于显示商品信息:
```csharp
public string ShowInfo()
{
return $
参考资源链接:[C#编程:创建与使用商品类(Commodity)示例](https://wenku.csdn.net/doc/86bsqnc1kb?spm=1055.2569.3001.10343)
阅读全文