委派之小筆記(3)
C#在.NET 3.5 新增了一個委派功能Func。
我們可以參考MSDN : http://msdn.microsoft.com/zh-tw/library/bb549151.aspx
從當中可以看到 Func(T, TResult) 委派 :封裝具有一個參數並傳回 TResult 參數所指定之型別值的方法。
接下來我們來實作一下程式碼,從當中比較一下跟原來方式有甚麼不一樣。
程式碼如下:
1: namespace DelegateTrain
2: {
3:
4: public delegate string BossDel3<T>(T name);
5:
6: class Employee
7: {
8:
9: public string doWorkGen(string x)
10: {
11: return string.Format("{0} : 泛型委派",x);
12: }
13: }
14:
15: class Program
16: {
17: static void Main(string[] args)
18: {
19: Employee employee = new Employee();
20:
21: //1.原來的泛型委派方式
22: BossDel3<string> bossDel3 = new BossDel3<string>(employee.doWorkGen);
23: Console.WriteLine(bossDel3("大胖"));
24:
25: //2.使用Func新功能泛型委派
26: Func<string, string> bossDelFunc = employee.doWorkGen;
27: Console.WriteLine(bossDelFunc("Func大胖"));
28:
29: Console.ReadLine();
30: }
31: }
32: }
發現了嗎?原來要達成的委派必須要有如下步驟:
1.宣告一個泛型委派,如下程式碼:
2.實體化委派並將Method Name指定給它:
BossDel3<string> bossDel3 = new BossDel3<string>(employee.doWorkGen);
3.使用委派:
Console.WriteLine(bossDel3("大胖"));
而使用Func的方式,則精簡程式碼到如下程度:
Func<string, string> bossDelFunc = employee.doWorkGen;
Console.WriteLine(bossDelFunc("Func大胖"));
看是不是很精簡呢^^~~