Action和Func委托数组

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

Actionn>

Funcn,out Result>

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

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

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

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

1,Action

定义一个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[] 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
添加MathOperations类一些方法:


	public static double MultiplyByTwo1(double value)//double返回类型
	{
		return (value * 2);
	}
	public static double Square1(double value)//double返回类型
	{
		return (value * value);
	}
在main中定义Func
	static void Main(string[] args)
        {
            Func[] 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


 
  
 
  
 
  
 
  
 
  
 
  
 
  
 
  
 
 

你可能感兴趣的:(C#)