日常生活的交流与学习

首页 新随笔 联系 管理

委托

特性

在C#中,委托是一个非常有用的特性,它

  • 允许将方法作为参数传递给其他方法,
  • 或者作为事件的处理器。

使用场景

委托的使用场景非常广泛,例如:

  • 异步编程:委托可以用来指定回调方法,这在异步编程中非常有用。
  • 事件处理:在.NET中,事件通常是通过委托来实现的,允许订阅和取消订阅事件。
  • LINQ查询:委托用于定义LINQ查询中的谓词逻辑。
  • 多播委托:可以将多个方法绑定到同一个委托实例,当调用委托时,所有绑定的方法都会被执行。

代码示例

下面是一个简单的C#代码示例,展示了如何声明和使用委托:

internal class Program
{
    // 声明一个委托类型
    // - `MyDelegate` 是一个委托类型,它可以指向任何接受单个字符串参数并返回void的方法。
    public delegate void MyDelegate(string message);

    // 一个接受委托作为参数的方法 
    // - `MethodWithCallback` 方法接受一个 `MyDelegate` 类型的参数,并在内部调用它。
    public static void MethodWithCallback(int param1, int param2, MyDelegate callback)
    {
        // 执行一些操作
        callback?.Invoke($"The number is: {param1 + param2}");
    }

    // 与委托类型匹配的方法
    public static void DelegateMethod(string message)
    {
        Console.WriteLine(message);
    }
    // 使用示例
    public static void Example()
    {
        // 创建委托实例并关联具体方法
        // - `DelegateMethod` 是一个与 `MyDelegate` 类型匹配的方法,它被传递给 `MethodWithCallback` 并最终被调用。
        MyDelegate add = new MyDelegate(DelegateMethod);
        // 调用方法,并传递委托实例
        MethodWithCallback(5, 3, add);
    }

    private static void Main(string[] args)
    {
        Example();
    }

}

在这个示例中,

  • MyDelegate 是一个委托类型,它可以指向任何接受单个字符串参数并返回void的方法。

  • MethodWithCallback 方法接受一个 MyDelegate 类型的参数,并在内部调用它。

  • DelegateMethod 是一个与 MyDelegate 类型匹配的方法,它被传递给 MethodWithCallback 并最终被调用。

posted on 2024-03-21 19:38  lazycookie  阅读(12)  评论(0编辑  收藏  举报