C# 中的委托

委托的概念

在C#中,委托是一种引用类型,它表示对方法的引用,即委托就是一种用来指向一个方法的引用类型变量。委托的声明类似于方法签名,但是关键字是delegate。下面是一个委托的声明和使用的例子:

cs 复制代码
// 声明一个委托
public delegate void MyDelegate(string message);
 
public class Program
{
    static void Main(string[] args)
    {
        // 创建委托实例,绑定到具体的方法
        MyDelegate myDelegate = new MyDelegate(DisplayMessage);
 
        // 使用委托
        myDelegate("Hello, World!");
    }
 
    // 与委托具有相同签名的方法
    static void DisplayMessage(string message)
    {
        Console.WriteLine(message);
    }
}

在C# 2.0引入了匿名方法,可以不必先定义一个方法就可以创建委托的实例。

cs 复制代码
// 声明一个委托
public delegate void MyDelegate(string message);

public class Program
{
    static void Main(string[] args)
    {
        MyDelegate myDelegate = delegate(string message)
        {
            Console.WriteLine(message);
        };
 
        myDelegate("Hello, World!");
    }
}

从C# 3.0开始,利用Lambda表达式,可以使代码更加简洁。

cs 复制代码
public class Program
{
    static void Main(string[] args)
    {
        MyDelegate myDelegate = message => Console.WriteLine(message);
 
        myDelegate("Hello, World!");
    }
}
相关推荐
小尧嵌入式几秒前
【Linux开发五】条件变量|信号量|生产者消费者模型|信号概念和常见信号|信号的使用和处理
linux·运维·服务器·开发语言·c++·嵌入式硬件
不会c+1 分钟前
Spring详解(二)IOC控制反转
java·开发语言
翔云1234561 分钟前
golang中使用 sort.Interface 实现复杂多级排序
开发语言·后端·golang
「QT(C++)开发工程师」11 分钟前
C++设计模式
开发语言·c++·设计模式
csgo打的菜又爱玩14 分钟前
数仓整体架构和建模架构
java·大数据·开发语言·架构
ん贤15 分钟前
自go-zero走进微服务
开发语言·后端·golang
小菜鸡桃蛋狗17 分钟前
第一次学c语言系列之——函数补充!!!
开发语言
小花17 分钟前
java后端框架之spring
java·开发语言·spring
一条大祥脚18 分钟前
势能分析与势能线段树
开发语言·javascript·数据结构·算法
chao18984430 分钟前
基于字典缩放的属性散射中心参数提取算法与MATLAB实现
开发语言·算法·matlab