C#中的委托类型

本文详细介绍了C#中的委托概念,包括Action和Func泛型委托的使用,自定义委托的声明与调用,以及如何通过委托组合、添加方法、从委托中移除方法等操作。此外,还讨论了匿名方法和Lambda表达式的应用,加深了对委托这一强大的特性理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C#的委托,类似C++里的函数指针,相当于是给函数取了一个别名,其实质上是一种引用类型,使用前需要先创建一个委托对象;一个委托对象可以持有一个或多个方法的引用,持有的方法可以是实例方法,也可以是静态方法。

系统提供的委托类型

Action

Action是一种至少0个参数、无返回值的泛型委托:

//格式:
Action act = new Action(对象名.方法名); //实例化对象
act.Invoke(); //调用(Invoke可省略,即写成:act();)

//举个例子,假设此时存在一个类Test(),其中有这样一个方法:
public void MyMethod()
{
   
    Console.WriteLine("Hello World!");
}
//在Main方法中调用:
static void Main(string[] args)
{
   
    Test t = new Test();
    Action act = new Action(t.MyMethod);
    act(); //像调用方法一样去使用委托即可
}
//运行结果为:
Hello World!
Func

Func是一种至少0个参数、至多16个参数、必须有返回值的泛型委托(注意返回值类型要写在最后)

//格式
Func<参数类型, 返回值类型> func = new Func<参数类型, 返回值类型>(对象名.方法名); //实例化对象
func(参数列表); //调用

//举个栗子,假设此时存在一个类Test(),其中有这样一个方法:
public double MyMethod(int a,int b)
{
   
    return a + b;
}
//在Main方法中调用:
static void Main(string[] args)
{
   
    Test t = new Test();
    Func<int, int, double> func = new Func<int, int
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值