Action<T>和Func<T>委托数组

来源:互联网 发布:java 系统时间 格式化 编辑:程序博客网 时间:2024/05/04 19:59

C#编程过程中,除了利用delegate定义普通的委托类型以外,还可以利用Action<T>和Func<T>定义委托数组

Action<in T1,in T2...,in Tn>

Func<in T1,in T2...,in Tn,out Result>

以上是两者的定义格式,其中n小于等于16

相同点:可以调用最多16个参数的的方法,参数可以为0个;

不同点:Func<T>需要返回值参数,Action<T>不需要。

以下结合学习资料举两个例子

1,Action<T>

定义一个MathOperations类,在其中创建一些方法:

        class MathOperations        {            public static void MultiplyByTwo(double value)            {                Console.WriteLine("2* {0} = {1}", value, value * 2);            }            public static void Square(double value)            {                Console.WriteLine("{0}* {1} = {2}", value, value, value * value);            }            public static void Introduction(double value)            {                Console.WriteLine("I'm a double. My value is {0}", value);            }        }


main方法实现:


static void Main(string[] args)        {            Action<double>[] operations =   //定义委托数组,并传递方法            {                MathOperations.MultiplyByTwo,                MathOperations.Square,                MathOperations.Introduction            };            foreach (var del in operations) //遍历委托数组            {                del(5);                     //对委托数组内的方法进行赋值            }            Console.ReadKey();        }

输出结果:
2* 5 = 10
5* 5 = 25
I'm a double.My value is 5


2,Func<T>
添加MathOperations类一些方法:


public static double MultiplyByTwo1(double value)//double返回类型{return (value * 2);}public static double Square1(double value)//double返回类型{return (value * value);}
在main中定义Func<T>
static void Main(string[] args)        {            Func<double, double>[] operations =            {              MathOperations.MultiplyByTwo1,              MathOperations.Square1            };            foreach (var del in operations)            {                double result = 0;                result = del(5); //获取返回值                Console.WriteLine(result);//输出            }            Console.ReadKey();        }

输出结果:
10

25

总结:在程序中,需要方法有返回值的委托用Func,反之用Action


 
原创粉丝点击