C#方法作引數——關於Action和Func的使用
阿新 • • 發佈:2019-02-07
前言
C#用了4年了,之前一直對“委託”這個概念不是很理解,前幾天突然就豁然開朗了。所以在這裡記一下,希望這不僅是對自己成長的記錄,也能對小夥伴們有所幫助。
分析
C#委託,可以看成是一種函式指標,它將會非常有用當你想將某個方法作為引數傳入另外一個方法時(我也想吐槽一下這樣寫語序有些偏英文化,但是貌似這樣寫會使主體表達更連貫?)。
委託可以使用delegate實現,但本文所討論的是委託的另外兩種實現方式:Action和Func。相比delegate關鍵字,使用Action和Func會使程式碼更簡潔。Action和Func兩者的區別在於Action沒有返回值,而Func有返回值。
開始
本文將通過一個例子來介紹Action和Func的概念及使用方法。
開啟VS2017,新建控制檯應用,取名為ActionFuncTest,確定。
將Program.cs的程式碼替換為下面程式碼:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace ActionFuncTest { class Program { static int num = 0; static void Main(string[] args) { StartYourShow(); Console.Read(); } static void StartYourShow() { while (num < 5) { num += 1; Console.WriteLine("show"); } Console.WriteLine("ShowEnd"); } } }
F5執行,你將會看到的結果如下圖所示:
我們分析一下StartYourShow這個方法的組成,它可以看做事由3部分組成的:
-
不終止條件(num<5)。或者說終止條件(num>=5)
-
迴圈事件(num+=1;Console.WriteLine(“show”);)
-
終止後事件(Console.WriteLine(“ShowEnd”)