其实他们两个都是委托【代理】的简写形式。
一、【action<>】指定那些只有输入参数,没有返回值的委托
Delegate的代码:
public delegate void myDelegate(stringstr);public static void HellowChinese(stringstrChinese)
{
Console.WriteLine("Good morning," +strChinese);
Console.ReadLine();
}
myDelegate d= newmyDelegate(HellowChinese);
d("Mr wang");
用了Action之后呢:
public static void HellowChinese(stringstrChinese)
{
Console.WriteLine("Good morning," +strChinese);
Console.ReadLine();
}
Action action =HellowChinese;
action("Spring.");
就是相当于省去了定义委托的步骤了。
二、func<> 这个和上面的那个是一样的,区别是这个有返回值!
public static string HelloEnglish(stringstrEnglish)
{return "Hello." +strEnglish;
}
Func f =HelloEnglish;
Console.WriteLine(f("Srping ji"));
Console.ReadLine();
Func<>是一个能接受多个参数和一个返回值的泛型委托,它能接受0个到4个输入参数, 其中 T1,T2,T3,T4 代表自定的输入类型,TResult为自定义的返回值。
public delegate TResult Func()
public delegate TResult Func(T1 arg1)
public delegate TResult Func(T1 arg1,T2 arg2)
public delegate TResult Func(T1 arg1,T2 arg2,T3 arg3)
public delegate TResult Func(T1 arg1,T2 arg2,T3 arg3,T4 arg4)
Action<>与Func<>十分相似,不同在于Action<>的返回值为void,Action能接受1~16个参数
public delegate void Action()
public delegate void Action(T1 arg1,T2 arg2)
public delegate void Action(T1 arg1,T2 arg2, T3 arg3)
.............
public delegate void Action(T1 arg1,T2 arg2,T3 arg3,T4 arg4,...... ,T16 arg16)