委派之小筆記(3)

委派之小筆記(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大胖"));

看是不是很精簡呢^^~~