C#基础18:内置委托类型Action和Func

 

前文:https://blog.csdn.net/Jaihk662/article/details/97130647(匿名方法与Lambda表达式)

一、Action泛型委托

Action 为 System 内置的无返回值委托,只需要引用 System 库就可以直接使用而不用定义,有以下几种形式

  • public delegate void Action();
  • public delegate void Action<T1>(T1 arg1);
  • public delegate void Action<T1, T2>(T1 arg1, T2 arg2);
  • public delegate void Action<T1, T2, T3>(T1 arg1, T2 arg2, T3 arg3);
  • public delegate void Action<T1, T2, T3, T4>(T1 arg1, T2 arg2, T3 arg3, T4 arg4);
  • ……

一个使用的例子如下(功能:给予a和b,输出它们加减乘除后的结果):

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;

public class Subject : MonoBehaviour
{
    private void Start()
    {
        Action<int, int> delt = (int a, int b) => Debug.Log(a + b);         //直接用Lambda表达式
        delt += (int a, int b) => Debug.Log(a - b);
        delt += (int a, int b) => Debug.Log(a * b);
        delt += (int a, int b) => Debug.Log(a / b);

        delt(5, 3);
    }
}

 

二、Func泛型委托

Func 为 System 内置的有返回值委托,只需要引用 System 库就可以直接使用而不用定义,有以下几种形式

  • public delegate TResult Func<TResult>();
  • public delegate TResult Func<T1, TResult>(T1 arg1);
  • public delegate TResult Func<T1, T2, TResult>(T1 arg1, T2 arg2);
  • public delegate TResult Func<T1, T2, T3, TResult>(T1 arg1, T2 arg2, T3 arg3);
  • public delegate TResult Func<T1, T2, T3, T4, TResult>(T1 arg1, T2 arg2, T3 arg3, T4, arg4);
  • ……

一个使用的例子如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;

public class Subject : MonoBehaviour
{
    private void Start()
    {

        Func<int, int, string> delt = (int a, int b) => (a+b).ToString();
        delt += (int a, int b) => (a * b).ToString();
        delt += (int a, int b) => (a - b).ToString();
        delt += (int a, int b) => (a / b).ToString();

        Debug.Log(delt(5, 3));          //注意只会输出最后一个返回值,这个测试其实没什么意义
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值