用C#实现通过事件计算两个数加减乘除
时间: 2024-09-23 18:03:36 浏览: 21
在C#中,可以使用事件和委托来实现动态计算两个数的加、减、乘、除操作。首先,我们创建一个名为`NumberCalculator`的类,它包含两个属性代表数字,以及事件`OperationPerformed`来通知运算结果。
```csharp
public class NumberCalculator
{
public event Action<int, int, string> OperationPerformed; // 委托,用于处理运算结果
private int _numberA;
private int _numberB;
public int NumberA
{
get { return _numberA; }
set { _numberA = value; }
}
public int NumberB
{
get { return _numberB; }
set { _numberB = value; }
}
public void Add()
{
PerformOperation((a, b) => a + b, "Addition");
}
public void Subtract()
{
PerformOperation((a, b) => a - b, "Subtraction");
}
public void Multiply()
{
PerformOperation((a, b) => a * b, "Multiplication");
}
public void Divide()
{
if (b != 0)
{
PerformOperation((a, b) => a / b, "Division");
}
else
{
Console.WriteLine("Cannot divide by zero!");
}
}
private void PerformOperation(Func<int, int, int> operation, string opType)
{
int result = operation(_numberA, _numberB);
OperationPerformed?.Invoke(result, _numberA, _numberB, opType); // 触发事件并传递结果
}
}
```
然后,在主程序中,我们可以创建`NumberCalculator`实例,并注册一个方法来接收并处理`OperationPerformed`事件:
```csharp
using System;
class Program
{
static void Main(string[] args)
{
NumberCalculator calculator = new NumberCalculator();
calculator.OperationPerformed += HandleResult; // 注册事件处理器
calculator.NumberA = 10;
calculator.NumberB = 5;
calculator.Add(); // 输出 15
calculator.Subtract(); // 输出 5
calculator.Multiply(); // 输出 50
calculator.Divide(); // 输出 2
calculator.NumberB = 0; // 会触发错误处理
calculator.Divide();
}
static void HandleResult(int result, int numA, int numB, string opType)
{
Console.WriteLine($"Performed {opType}: {numA} {opType} {numB} = {result}");
}
}
```