天天看點

(C#) 内置 委托(1)

    上篇文章簡單介紹了一下什麼是委托?但是每次都内定義一個委托,感覺有些麻煩,是以微軟為了為人民服務,提出了内置委托,讓你直接使用就好。

    對于内置委托,最常用的主要有三個,Action<>,Func<>,Predicate<>

    對于内置,怎麼了解?其實就是少去了定義的過程。

    對于Action<>的出現是在.NetFramework2.0的時候出現的,當時還隻能夠傳入4個值,漸漸的在.NetFramework3.0的支援下,出現了Func<>,滿足了對于傳回值的要求。現在不管是Action<>還是Func<>最多可以封裝16個參數

(C#) 内置 委托(1)

舉例說明:

ACTION<T>demo:

    利用三個參數,來對一句話進行設定:

//Action<>委托的一個目标
        static void DisplayMessage(string msg, ConsoleColor txtColor, int printCount)
        {
            //設定指令行文本的顔色(擷取前景色)
            ConsoleColor previous = Console.ForegroundColor;
            Console.ForegroundColor = txtColor;
            //循環的次數
            for (int i = 0; i < printCount; i++)
            {
                Console.WriteLine(msg);
            }
            //重置顔色
            Console.ForegroundColor = previous;
        }
           

看控制台的調用:

static void Main(string[] args)
        {
            //使用Action<>委托來指向DisplayMessage
            Action<string, ConsoleColor, int> actionTarget = DisplayMessage;
            actionTarget("Action Message!", ConsoleColor.Red, 5);
            console.readline();
           

Action<>是沒有傳回值的, 看顯示結果:

(C#) 内置 委托(1)

而對于Func<>來說,最後一個委托則封裝的傳回值的類型:

//簡單的Add方法
        static int Add(int x, int y)
        {
            return x + y;
        }
           

看控制台調用:

//使用Func<>委托來指向Add
            Func<int, int, int> funcTarget = new Func<int, int, int>(Add);
            int result = funcTarget.Invoke(40, 40);
            Console.WriteLine("40+40={0}", result);
           

    定義兩個參數int類型,傳回一個int類型的傳回值。

對于内置委托的使用,簡化了自定義委托帶給我們的繁瑣,不過隻是講述了一下Action<>和Func<>的使用,未完待續……

繼續閱讀