在上一篇文章中可以清楚的知道Action的用法,這篇再來看看Func怎麼寫囉。
那Func是什麼呢?
就是Action,但是 是會返回一個值的Action
如果分不清楚下列程式碼void跟string的差異,建議上一頁,這系列文章完全不適合現階段的你進行閱讀
private void HelloVoid()
{
}
private string HelloString()
{
return "HelloString";
}
先來看看MSDN的Func吧
「這個委派所封裝之方法的傳回值。」
就是方法一定會傳回一個值。
直接來看Code吧!
using System;
namespace ConsoleApp5
{
public class Class1
{
/* 在呼叫時,外部要傳入一個Func
* Func 即是 有返回string型別的一個函式
*
* 註※ Func<T>的T是個泛型的意思,換句話說可以自定義要返回的值
* (不懂泛型會不懂這段的意思,建議先了解泛型)
*
* 需要特別注意的是Func的最後一個T,永遠是返回的值,其餘的則是傳入的參數
* 範例:Func<T,TResult>
* T : 第一個T =>傳入參數
* TResult :最後一個T =>返回值
*/
public static void DelegateByFunc(Func<string> func)
{
// 外部傳入一個函式,在這邊做執行後返回一個外部函式給予的值
string str = func();
// 透過函式返回一個值,在程式碼中把返回的值印出來
Console.WriteLine(str);
}
}
}
using System;
namespace ConsoleApp5
{
class Program
{
// 外部實做的有返回值的函式
private static string Hello()
{
return "Hello World!";
}
static void Main(string[] args)
{
// 把Hello這個有返回值的函式當作參數傳遞
Class1.DelegateByFunc(Hello);
}
}
}
因此我們可以取透過外部,給予內部執行的程式碼,並且在內部執行,取得Hello World!這個字串
這樣就可以達到外部給程式碼,而內部實做的功能了!
歡迎您的加入,讓這個社群更加美好!