其實他們兩個都是委托【代理】的簡寫形式。 一、【action<>】指定那些只有輸入參數,沒有返回值的委托 Delegate的代碼: [csharp] public delegate void myDelegate(string str); public static void HellowChinese(string strChinese) { Console.WriteLine("Good morning," + strChinese); Console.ReadLine(); } myDelegate d = new myDelegate(HellowChinese); d("Mr wang"); 用了Action之後呢: [csharp] public static void HellowChinese(string strChinese) { Console.WriteLine("Good morning," + strChinese); Console.ReadLine(); } Action<string> action = HellowChinese; action("Spring."); 就是相當於省去了定義委托的步驟了。 二、func<> 這個和上面的那個是一樣的,區別是這個有返回值! [csharp] www.2cto.com public static string HelloEnglish(string strEnglish) { return "Hello." + strEnglish; } Func<string, string> f = HelloEnglish; Console.WriteLine(f("Srping ji")); Console.ReadLine();