Func,Action,Predicate的区别

一、介绍

1.Func,Action,Predicate都是微软提供的定义好的委托类型,他们都位于System命名空间下,使用这几个委托可以简化代码的编写,比自定义委托使用起来更加方便;

2.Func委托具有返回值,并且可以有0到16个参数;

3.Action委托不具有返回值,可以有0到16个参数;

4.Predicate表示定义一组条件并确定指定对象是否符合这些条件的方法,他具有一个bool类型的返回值,符合由此委托表示的方法中定义的条件,则为true,否则为false;

二、实例

1.简单的使用

    public class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                string strReceiveData = Console.ReadLine();
                //Action是一个委托,该委托具有0到16个参数,但他不具有返回值,只要满足该委托签名的方法均可以使用该委托
                Action<string> action = PrintString;
                action(strReceiveData);

                //Func是一个委托,该委托具有0到16个参数,并且具有返回值,只要满足该委托签名的方法均可以使用该委托
                Func<string, string, string> func = AddString;
                string strResult = func(strReceiveData, strReceiveData);
                Console.WriteLine("输出:" + strResult);

                //Lambda表达式是一个函数,所以可以将他直接赋给委托
                Func<int, int, int> funcAdd = (x, y) => x * y;
                Console.WriteLine("结果为:" + funcAdd(4, 5));

                //Lambda表达式中无参数
                Func<int> result=()=> 1;
                int i = result();

                //Lambda表达式中有一个显式类型的参数
                Predicate<int> myPredicate = (int o) => o > 10;
                //Lambda表达式中有一个隐式类型的参数,这时参数列表可以不用小括号
                Predicate<int> predicate = o => o > 10;
                List<int> list=new List<int>();
                list.Add(9);
                list.Add(20);
                List<int> newList = list.FindAll(myPredicate);            
            }
        }

        private static void PrintString(string strData)
        {
            Console.WriteLine("您输入的是:" + strData);
        }

        private static string AddString(string strArg1, string strArg2)
        {
            return strArg1 + strArg2;
        }
    }


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值