首页 > 编程语言 >委托 C#

委托 C#

时间:2024-03-21 19:44:05浏览次数:19  
标签:调用 委托 C# void MethodWithCallback MyDelegate 方法

委托

特性

在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 并最终被调用。

标签:调用,委托,C#,void,MethodWithCallback,MyDelegate,方法
From: https://www.cnblogs.com/zhuoss/p/18088118

相关文章

  • ExceptionHandler-全局异常处理器
    1.出现异常,如何处理?在Controller方法中进行try…catch处理全局异常处理器。Controller抛出的异常没有处理,最终会抛给全局异常处理器处理,处理完后再给浏览器响应统一处理结果集。2.全局异常处理器优点不用强制写try-catch,由全局异常处理器统一捕获处理。(try-catch不仅有大......
  • 通过XMLRpc控制海康VB2200视觉控制器自带光源接口
    在使用HikVB2200视觉控制器时,由于并未使用VisionMaster软件,但是使用了视觉控制器的光源接口。导致无法直接控制该光源接口。VB2200视觉控制器提供了一个IOController应用程序,其中对应的exe文件可以设置为对应光源接口的亮度等参数,基本满足需求。但是IOController只能设置......
  • NSSCTF—Crypyo "第一页" ԅ(≖‿≖ԅ) (待续……)
    [鹤城杯2021]easy_crypto题目:公正公正公正诚信文明公正民主公正法治法治诚信民主自由敬业公正友善公正平等平等法治民主平等平等和谐敬业自由诚信平等和谐平等公正法治法治平等平等爱国和谐公正平等敬业公正敬业自由敬业平等自由法治和谐平等文明自由诚信自由平等富强公正敬业......
  • 【pycharm】作为Array查看出现数据无法显示问题(已解决)
    【pycharm】作为Array查看出现数据无法显示问题(已解决)当我们在调试代码的时候,需要对某个变量进行查看,就如同在matlab中,我们可以直接在工作区对某个变量进行双击查看矩阵变量的具体数值在这里我遇到一个问题:我的pycharm是专业版2023.3.2,在查看变量作为Array查看出现数据......
  • 131. 分割回文串c
    /***Returnanarrayofarraysofsize*returnSize.*Thesizesofthearraysarereturnedas*returnColumnSizesarray.*Note:Bothreturnedarrayand*columnSizesarraymustbemalloced,assumecallercallsfree().*/charc[30][30];booljudge(ch......
  • 记忆化搜索 —— Leetcode 2684. 矩阵中移动的最大次数
    题目如下:给你一个下标从 0 开始、大小为 mxn 的矩阵 grid ,矩阵由若干 正 整数组成。你可以从矩阵第一列中的 任一 单元格出发,按以下方式遍历 grid :从单元格 (row,col) 可以移动到 (row-1,col+1)、(row,col+1) 和 (row+1,col+1) 三个单元......
  • 网络通信——IP地址、端口号、协议(TCP、UDP)
    通信架构网络通信三要素IP地址IPv4地址 IPv6地址IP域名  IP常识 端口号概念协议 开放式网络互联标准:OSI、TCP/IP 传输层的2个通信协议——UDP、TCPTCP协议:三次握手建立建立可靠连接  进行三次握手的原因:为了确保客户端和服务端接收/发送消息都没有......
  • 【SpringSecurity】十七、OAuth2授权服务器 + 资源服务器Demo
    文章目录0、库表准备:1、项目结构2、基于数据库的认证3、授权服务器配置4、授权服务器效果测试5、资源服务器配置相关......
  • 23种设计模式核心思想及代码实现(Java C++)
    目录代码OOP七大原则策略模式单例模式观察者模式装饰模式抽象工厂模式工厂模式简单工厂模式工厂模式抽象工厂模式三种工厂模式的区别简单工厂模式和策略模式的不同pipeline模式职责链模式代理模式静态代理动态代理......
  • 39. 组合总和c
    /***Returnanarrayofarraysofsize*returnSize.*Thesizesofthearraysarereturnedas*returnColumnSizesarray.*Note:Bothreturnedarrayand*columnSizesarraymustbemalloced,assumecallercallsfree().*/inttemp[50];voiddfs(int*c......