c#内置了几个常用委托Action、Func、Predicate

一、Action

Action封装的方法没有参数也没有返回值,声明原型为:

public delegate void Action();

二、Action<T>

Action<T>没有返回值,可以有多个参数,,两个参数的声明原型为:

public delegate void Action<in T1, in T2>(T1 arg1, T2 arg2);

三、Func<T>

Func<T>始终都会有返回值,返回值的类型是参数中最后一个,两个参数一个返回值的声明原型为:

public delegate TResult Func<in T1, in T2, out TResult>(T1 arg1, T2 arg2);

四 、Predicate<T>

Predicate<T>委托表示定义一组条件并确定指定对象是否符合这些条件的方法,返回值始终为bool类型,声明原型为:

public delegate bool Predicate<in T>(T obj);

五、实例

namespace CSharpTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Action Hello = ()=> Console.Write("Hello World\n");
            Action<int, int> Result = (ln,rn) => Console.Write("the Sum ={0}\n", ln + rn);
            Func<int, int, int> GetSum = (ln, rn) => ln + rn;
            Predicate<int> IsZero = (num) => num == 0;

            Hello();
            Result(3,2);
            var sum = GetSum(10,3);
            Console.Write("the Sum ={0}\n", sum);
            bool res = IsZero(10);
            Console.Write("the res = {0}\n", res);

            Console.ReadKey();
        }

    }
}

运行结果:




猜你喜欢

转载自blog.csdn.net/liyazhen2011/article/details/80537379