1. 程式人生 > >C#內建委託之Action與Func

C#內建委託之Action與Func

在C#語言的using system的名稱空間下,有兩個內建委託:Action與Func

1.Action委託(都沒有返回值):

Action:無參,無返回值; Action<T>:有引數T(1~16 個),無返回值;

2.Func委託(都有返回值):

Func<T>:無參,返回值為T;

Func<T1,T2,T>:有引數T1,T2(1~16個),返回值為T

程式碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace actionAndFunc
{
    class Program
    {        
        static void Main(string[] args)
        {
            //定義Action委託,無引數,無返回值
            Action act01;
            //使用Lambda表示式新增方法語句塊
            act01 = () => Console.WriteLine("我是Action無引數的委託");
            act01();
 
            //定義Action委託,有1個引數,無返回值
            Action<int> act02;
            act02 = (int a)=>Console.WriteLine("我是Action有1個引數的委託{0}",a);
            act02(666);
 
            //定義Action委託,有2個引數,無返回值
            Action<int, string> act03;
            act03 = (int a, string str) =>
            {
                Console.WriteLine("我是Action有2個引數的委託,第一個引數是{0},第二個是{1}",a,str);
            };
            act03(666,"sixsixsix");
 
 
            Console.WriteLine("-----------------------------------------------------------------");
            Console.WriteLine("-----------------------------------------------------------------");
           
 
            //定義Func委託,沒有引數,返回值是int
            Func<int> func01;
            func01 = () =>
            {
                Console.Write("一個無引數的Func委託,返回值是:");
                return 666;
            };
            var temp = func01();
            Console.WriteLine(temp);
 
            //定義Func委託,有兩個string引數,返回值是int,注意返回值是在<>的最後一個
            Func<string, string, int> func02;
            func02 = (string str01, string str02) =>
              {
                  Console.Write("{0}一個無引數的Func委託{1},返回值是:",str01,str02);
                  return 666;
              };
            var Temp = func02("我是","型別");
            Console.WriteLine(Temp);
            
            Console.ReadKey();
 
        }
    }
}