C#委托

C#委托

委托是一种动态调用方法的类型,委托是对方法的抽象和封装。

函数指针。

调用委托时,委托包含的所有方法将被执行。

委托定义

delegate关键字

修饰符 delegate 返回值类型 委托名( 参数列表 );
public delegate int myDelegate(int x ,int y);

委托实例化

命名方法委托在实例化时必须带入方法的具体名称

委托名 委托对象名 = new 委托名( 方法名 );

调用委托

委托对象名( 参数列表 );
using System;

class Program {
    public delegate int AddDelegate(int x,int y);
    static void Main(string[] args){
        AddDelegate addDelegate = new AddDelegate((new Test()).Add2num);
        Console.WriteLine(addDelegate(1,2));
    }
}

class Test{
    public int Add2num(int x,int y){
        return x+y;
    }
}

定义委托,形参要有名称

Action与Func

Action和Func是系统预定义的委托。

Action是无返回值的泛型委托,Action有两种形式:

  • 没有返回值也不可以带参数 Action
  • 没有返回值,但是可以带参数Action<>, 参数限制0~16个

Func是有返回值泛型委托, Func有两种形式

  • 有返回值,无参数

    Func<返回值类型> 必须有返回值

  • 有返回值,有参数

    Func<参数1,参数2,返回值类型> 必须有返回值和参数,参数0~16个

使用Func改写上面的委托代码

using System;

class Program {
    static void Main(string[] args){
        Func<int,int,int> addDelegate = new Func<int,int, int>((new Test()).Add2num);
        Console.WriteLine(addDelegate(1,2));
    }
}

class Test{
    public int Add2num(int x,int y){
        return x+y;
    }
}

Action和Func参数类型使用泛型定义,不能给形参名称

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

暴风雨中的白杨

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

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

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

打赏作者

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

抵扣说明:

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

余额充值