C#基礎:委托之Action 和Func 的用法


  我們在使用委托的過程中,除了為每個參數和返回類型定義一個委托之外,也就是說為每一個方法(作為參數的方法)定義一個委托,我們還可以使用Action<T>和Func<T>委托。

  泛型Action<T>委托表示引用一個void返回類型的方法。Action<T>委托類存在不同的變體,可以傳遞至多16種不同的參數類型,沒有泛型參數的Action類可以調用沒有參數的方法。例如:Action<in T1>調用帶一個參數的方法,Action<in T1,in T2>調用帶兩個參數的方法等

  Func<T>的用法和Action<T>用法類似,但是Func<T>表示引用一個帶返回類型的方法,Func<T>也存在不同的變體,至多可以傳遞16個參數類型和1個返回類型,例如:Func<in T1,out Resout>表示帶一個參數的方法,Func<in T1,in T2,out Resout>表示調用帶兩個參數的方法。

  下面就直接給一個Action<T>和Func<T>的例子

using System;
namespace DelegateFuncAction
{
    class Program
    {
        static void Main(string[] args)
        {
            Func<double, double,double> DoAddtion = calculate.addtion;
            double result = DoAddtion(20, 30);
            Console.WriteLine("Func帶返回參數委托做加法結果為:{0}",DoAddtion(10,20));
            calculate c=new calculate();
            Action<double, double> DoSubstraction = c.substraction;
            DoSubstraction(90, 20);
        }
    }
    class calculate
    {
        public static double addtion(double x, double y)
        {
            return x + y;
        }
        public void substraction(double x, double y)
        {
            Console.WriteLine("Action不帶返回參數委托做減法結果為:{0}",x-y);
        }
    }
}

輸出結果:

Func帶返回參數做加法結果為:30
Action不帶返回參數委托做減法結果為:70


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM