C#中的委托机制(二)

C#中的委托机制(二)
上篇blog中我们介绍了一下delegate的相关内容C#中的委托机制(一)
那么其实在C#中还有三个不同的委托类,分别是:Action和Func以及predicate。

Action
Action 是一种无返回值的泛型委托。它可以是无参数的,也可以是含参的,最高支持16个参数,基本的格式为:

访问权限控制符 (static) void 函数名<T>(Action<T> action, T p)       
        {
            action(p);
        }

例子:

public static void Test<T>(Action<T> action, T p) 
        {
            action(p);
        }
public static void Action(int x) //构造几个同名的函数
        {
            WriteLine(x * x);
        }
public static void Action(double x)
        {
            WriteLine(x * x);
        }
private static void Action(string s)
        {
            Console.WriteLine(s);
        }
 static void Main(string[] args)
        {
          Test<int>(Action, 100);
          Test<double>(Action, 10.2);
          Test<string>(p => { Console.WriteLine("{0}", p); }, "HelloWorld");   //使用Lambda表达式进行的委托
          ReadKey();

Func
Func与Action的不同之处在于Func为有返回值的委托函数,因此必须进行return操作,Func与Action一样最多支持16个参数。
其中,Func为无参形式,返回值为int。
Func<T1,T2,T3,t4>为传入T1,T2,T3类型的变量,返回泛型类型为t4的返回值。

访问权限控制符 (static) T  函数名<T>(Func<T1,T2,T> func, T1 p,T2 q)       
        {
            return func(p,q);
        }

static void Main(string[] args)
        {
            Console.WriteLine(Test<int,int>(Fun,100,200));
            Console.ReadKey();
        }
public static int Test<T1, T2>(Func<T1, T2, int> func, T1 a, T2 b)
        {
            return func(a, b);
        }
private static int Fun(int a, int b)
        {
            return a + b;
        }

predicate
predicate 是返回 bool 型的泛型委托,predicate 表示传入参数为 int 返回 bool 的委托,Predicate 有且只有一个参数,返回值固定为 。具体代码可以参考官方文档。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

SharlockYu

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

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

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

打赏作者

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

抵扣说明:

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

余额充值