一、【action<>】指定那些只有输入参数,没有返回值的委托
Delegate的代码:
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之后呢:
public static void HellowChinese(string strChinese) { Console.WriteLine("Good morning," + strChinese); Console.ReadLine(); } Action<string> action = HellowChinese; action("Spring.");
就是相当于省去了定义委托的步骤了。
二、func<> 这个和上面的那个是一样的,区别是这个有返回值!
public static string HelloEnglish(string strEnglish) { return "Hello." + strEnglish; } Func<string, string> f = HelloEnglish; Console.WriteLine(f("Srping ji")); Console.ReadLine();
------------------------------------------------------------
稍微扩展一些
在C#3.0中引用了Limbda表达式,Limbda表达式实际上就是一个方法,只不过该方法是匿名方法(即没有名称的方法)
代码片段: Func<int,string,string> t=(int x, string b) => (x.ToString() + b);就等于
private string deletegate TestString(int x string b );//定义一个委托,返回值为string类型
private string test(int x string b)
{
return x.ToString() + b;
}
TestString t=new TestString(test);
t(44,"bbb");
Func<int,string,string>就是定义一个委托=private string deletegate TestString(int x string b ),前两个参数是相应方法的参数类型,最后一个为方法的返回类型。
由此看到FUNC的最后一个参数是返回值