C# 學習筆記_委託(二)Action與Func

Action的使用

    class Program
    {
        static void PrintString()
        {
            Console.WriteLine("Hello Word");
        }
        static void PrintInt(int i)
        {
            Console.WriteLine(i);
        }
        static void PrintString(string  str)
        {
            Console.WriteLine(str);
        }

        static void PrintDoubleInt(int i1,int i2)
        {
            Console.WriteLine(i1+i2);
        }
        static void Main(string[] args)
        {

            //Action a = PrintString; //action 是系統內置(預定義)的一個委託類型,它可以指向一個沒有返回值,沒有參數的方法 


            //Action<int> a= PrintInt;//定義了一個委託類型,這個類型可以只想一個沒有返回值,有一個int參數的方法

            //Action<string> a = PrintString;//定義了一個委託類型,這個類型 可以只想一個沒有返回值,有一個string參數的方法,在這裏系統會自動尋找匹配的方法

            Action<int, int> a = PrintDoubleInt;
            a(34, 23);
            Console.ReadKey();
            //Action 最大可以有16個參數
            //action 可以後面通過泛型去指定action指向的方法的多個參數的類型,參數的類型跟action後面聲明的委託類型是對應着的
        }
    }

Func的使用

    class Program
    {
        static int Test1()
        {
            return 1;
        }
        static int Test2(string str)
        {
            Console.WriteLine(str);
            return 100;
        }
        static int Test3(int i, int j)
        {
            return i + j;
        }
        static void Main(string[] args)
        {
            //Func<int> a =Test1;  // func中 的泛型類型指定的是方法的返回類型值
            //Console.WriteLine(a());
            //Console.ReadKey();


            // Func<string, int> a = Test2;//func 後面可以跟很多類型,最後一個類型是返回值類型,前面的類型是參數類型,參數類型必須跟指向的方法的參數類型按照順數對應


            Func<int, int, int> a = Test3;
            int  res= a(1, 5);
            Console.WriteLine(res);
            Console.ReadKey();
        }
    }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章