C# 事件及委托详细解释,并给出2组示例代码
时间: 2023-12-18 09:02:05 浏览: 36
C# 的事件和委托是两个非常重要的概念,它们允许开发人员在应用程序中实现松耦合的设计。事件和委托允许我们将方法作为参数传递,从而实现更加灵活的代码。
事件是一种特殊的委托,它允许我们在类中定义事件,然后在其他类中注册事件处理程序。当事件被触发时,所有注册的事件处理程序都会被调用。委托是一种类似于函数指针的类型,它允许我们将一个或多个方法作为参数传递到其他方法中。
下面是两组示例代码:
1. 事件示例:
```csharp
public class Button {
public event EventHandler Click;
public void Clicked() {
Click?.Invoke(this, EventArgs.Empty);
}
}
public class Form {
private Button _button;
public Form() {
_button = new Button();
_button.Click += Button_Click;
}
private void Button_Click(object sender, EventArgs e) {
Console.WriteLine("Button clicked!");
}
}
```
在上面的示例中,我们定义了一个 `Button` 类,其中包含了一个 `Click` 事件。在 `Form` 类中,我们实例化了一个 `Button` 对象,并注册了一个事件处理程序。当按钮被点击时,事件处理程序就会被调用。
2. 委托示例:
```csharp
public class Calculator {
public int Add(int a, int b) {
return a + b;
}
}
public class Math {
public delegate int Operation(int a, int b);
public void PerformOperation(int a, int b, Operation operation) {
int result = operation(a, b);
Console.WriteLine($"Result: {result}");
}
}
public class Program {
static void Main(string[] args) {
Calculator calculator = new Calculator();
Math math = new Math();
math.PerformOperation(2, 3, calculator.Add);
}
}
```
在上面的示例中,我们定义了一个 `Calculator` 类,其中包含了一个 `Add` 方法。在 `Math` 类中,我们定义了一个委托 `Operation`,并实现了一个 `PerformOperation` 方法,该方法接受两个整数和一个委托作为参数。在 `Program` 类中,我们实例化了一个 `Calculator` 对象和一个 `Math` 对象,并将 `Add` 方法作为委托传递给 `PerformOperation` 方法。当方法被调用时,委托会执行 `Add` 方法,并返回结果。