C# 委托封装
时间: 2023-07-12 16:18:50 浏览: 49
在 C# 中,可以使用委托来封装方法,使其可以像对象一样进行传递和操作。委托可以看作是函数指针,它包含了对一个或多个方法的引用,可以用来调用这些方法。
以下是一个示例,演示如何使用委托封装方法:
```csharp
class Program
{
delegate void MyDelegate(string message);
static void Main(string[] args)
{
// 创建委托实例并绑定方法
MyDelegate myDelegate = new MyDelegate(PrintMessage);
// 调用委托实例,实际上是调用委托所绑定的方法
myDelegate("Hello, world!");
}
static void PrintMessage(string message)
{
Console.WriteLine(message);
}
}
```
在上面的示例中,我们定义了一个委托类型 `MyDelegate`,它接受一个字符串参数并返回 `void`。我们创建了一个委托实例 `myDelegate` 并将其绑定到 `PrintMessage` 方法上,然后调用 `myDelegate` 实例,实际上是调用了 `PrintMessage` 方法。
需要注意的是,委托可以绑定一个或多个方法,可以通过 `+` 操作符将多个方法合并成一个委托。在调用委托时,会按照绑定的顺序依次调用每个方法。
以下是一个示例,演示如何将多个方法绑定到同一个委托上:
```csharp
class Program
{
delegate void MyDelegate(string message);
static void Main(string[] args)
{
// 创建委托实例并绑定多个方法
MyDelegate myDelegate = new MyDelegate(PrintMessage);
myDelegate += PrintMessageInUpperCase;
// 调用委托实例,会依次调用绑定的两个方法
myDelegate("Hello, world!");
}
static void PrintMessage(string message)
{
Console.WriteLine(message);
}
static void PrintMessageInUpperCase(string message)
{
Console.WriteLine(message.ToUpper());
}
}
```
在上面的示例中,我们将两个方法 `PrintMessage` 和 `PrintMessageInUpperCase` 绑定到同一个委托实例 `myDelegate` 上,并在调用 `myDelegate` 实例时,会依次调用这两个方法。