c# Action,Func,Predicate委托

本文详细介绍了.NET框架中预定义的三种泛型委托:Action、Func和Predicate的用法及特性。通过实例展示了如何使用Lambda表达式、匿名方法来实现这些委托的功能。

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

System命名空间下已经预先定义好了三中泛型委托,Action,Func和Predicate,这样我们在编程的时候,就不必要自己去定义这些委托了

Action是没有返回值的

Func是带返回值的

不同的.netframework版本下,能定义的参数个数可能不同

Predicate,只有一个参数,返回值是bool型

 /// <summary>
        /// Action泛型委托:.netframework4下 可以有0到16个参数
        /// </summary>
        public void TestAction()
        {
            Action a1 = () => Console.WriteLine("嘿嘿");//Lambda表达式
            a1();

            Action<string> a2 = s => Console.WriteLine("你好," + s);
            a2("阿牛");

            Action<int, int> a3 = delegate(int a, int b) {//匿名方法
                Console.WriteLine("a+b=" + (a + b));
            };
            a3(4, 5);
        }


        /// <summary>
        /// Func泛型委托:
        /// </summary>
        public void TestFunc()
        {
            Func<string> func1 = () => "你好";//表达式Lambda
            Console.WriteLine(func1());

            Func<string, string> func2 = s => { return "你好" + s; };//语句Lambda
            Console.WriteLine(func2("阿牛"));

            Func<int, int, int> func3 = delegate(int a, int b)//匿名方法
            {
                return a + b;
            };
            Console.WriteLine(func3(4, 5));
        }

        /// <summary>
        /// Predicate泛型委托
        /// </summary>
        public void TestPredicate()
        {
            Predicate<int> pre1 = a => a == 2;
            if (pre1(3))
            {
                Console.WriteLine("3==2");
            }
            else
            {
                Console.WriteLine("3<>2");
            }

            List<string> list = new List<string>();
            list.Add("A1");
            list.Add("A2");
            list.Add("B1");

            List<string> list2 = list.FindAll(s => s.StartsWith("B"));
            List<string> list3 = list.FindAll(delegate(string s) {
                return s.StartsWith("B");
            });
        }

 

转载于:https://www.cnblogs.com/niuge/p/3666621.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值