Func & Action 用法

2015年1月28日 星期三

Func & Action是委派用法,差別在於Func:有回傳值,Action:不需要回傳值

首先來看一下委派基本用法

 
    //委派基本定義
    public delegate string BaseDeletegate(string source);

    public static class ServiceBase
    {
        public static string Execute(BaseDeletegate action, string source)
        {
            string value = action.Invoke(source);
            return value;
        }
    }

    //呼叫委派用法
    public static void runBaseDeletegate()
    {
        BaseDeletegate action = ResponseMsg;
        string result = ServiceBase.Execute(action, "Neil");
        Console.WriteLine(result);
        Console.ReadLine();
    }

    //執行的方法
    public static string ResponseMsg(string str)
    {
        return "Hello:" + str;
    }
執行結果

改成用Func方法

 
    //Func定義
    public static string ExecuteFunc(Func action)
    {
        return action();  //有回傳值
    }

    //呼叫Func方法
    public static void runBaseFunc()
    {
        string result = ServiceBase.ExecuteFunc(() => {
            return ResponseMsg("FuncNeil");
        });
        Console.WriteLine(result);
        Console.ReadLine();
    }

    //執行的方法
    public static string ResponseMsg(string str)
    {
        return "Hello:" + str;
    }

執行結果:

改成用Action方法

 
    //Action定義
    public static void ExecuteAction(Action action)
    {
        action(); //沒有回傳值
    }

    //呼叫Action方法
    public static void runBaseAction()
    {
        ServiceBase.ExecuteAction(() => {
            ActionResopnseMsg("ActionNeil");
        });
    }

    //執行的方法
    public static void ActionResopnseMsg(string str)
    {
        Console.WriteLine("Hello:" + str);
        Console.ReadLine();
    }

執行結果:

0 意見: