浅谈C#委托

一、基本介绍

委托是一种引用类型,它表示对方法的引用,即委托就是一种用来指向一个方法的引用类型变量。

委托(Delegate)是一种特殊的类型,它定义了方法的类型,使得可以将方法作为参数传递,或者将其赋值给变量。委托是实现事件和回调方法的基础。

二、基本使用

定义委托类型:首先,你需要定义一个委托类型,指定它可以接受的方法的签名。

public delegate int Operation(int x, int y);

创建委托实例:然后,你可以创建委托类型的实例,并将方法赋值给它。

public int Add(int a, int b)
{
    return a + b;
}

public int Subtract(int a, int b)
{
    return a - b;
}

Operation op = new Operation(Add); // 将Add方法赋值给委托

调用委托:最后,你可以通过委托实例调用方法。

int result = op(5, 3); // 调用Add方法

委托与方法的匹配

  • 方法签名匹配:委托定义的方法签名必须与要赋值给它的方法的签名完全匹配。
  • 返回类型:方法的返回类型必须与委托定义的返回类型相同。
  • 参数列表:方法的参数列表必须与委托定义的参数列表完全相同。

多播委托

C# 允许将多个方法赋值给同一个委托实例,这种委托称为多播委托。你可以使用 +=-= 运算符来添加或移除方法。

public void ShowMessage(string message)
{
    Console.WriteLine(message);
}

Operation op = new Operation(Add);
op += Subtract; // 添加Subtract方法
op += ShowMessage; // 错误:ShowMessage的签名与Operation不匹配

int result = op(5, 3); // 首先调用Add,然后调用Subtract

泛型委托

从C# 2.0开始,你可以使用泛型委托来定义可以接受任何类型参数的委托。

public delegate T Operation<T, U>(T x, U y);

委托与事件

委托在事件处理中扮演着核心角色。事件是一种特殊的多播委托,用于在特定事件发生时通知多个方法。

public delegate void EventHandler(object sender, EventArgs e);

public event EventHandler MyEvent;

protected virtual void OnMyEvent(EventArgs e)
{
    MyEvent?.Invoke(this, e);
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CN.LG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值