上篇文章簡單介紹了一下什麼是委托?但是每次都内定義一個委托,感覺有些麻煩,是以微軟為了為人民服務,提出了内置委托,讓你直接使用就好。
對于内置委托,最常用的主要有三個,Action<>,Func<>,Predicate<>
對于内置,怎麼了解?其實就是少去了定義的過程。
對于Action<>的出現是在.NetFramework2.0的時候出現的,當時還隻能夠傳入4個值,漸漸的在.NetFramework3.0的支援下,出現了Func<>,滿足了對于傳回值的要求。現在不管是Action<>還是Func<>最多可以封裝16個參數
舉例說明:
ACTION<T>demo:
利用三個參數,來對一句話進行設定:
//Action<>委托的一個目标
static void DisplayMessage(string msg, ConsoleColor txtColor, int printCount)
{
//設定指令行文本的顔色(擷取前景色)
ConsoleColor previous = Console.ForegroundColor;
Console.ForegroundColor = txtColor;
//循環的次數
for (int i = 0; i < printCount; i++)
{
Console.WriteLine(msg);
}
//重置顔色
Console.ForegroundColor = previous;
}
看控制台的調用:
static void Main(string[] args)
{
//使用Action<>委托來指向DisplayMessage
Action<string, ConsoleColor, int> actionTarget = DisplayMessage;
actionTarget("Action Message!", ConsoleColor.Red, 5);
console.readline();
Action<>是沒有傳回值的, 看顯示結果:
而對于Func<>來說,最後一個委托則封裝的傳回值的類型:
//簡單的Add方法
static int Add(int x, int y)
{
return x + y;
}
看控制台調用:
//使用Func<>委托來指向Add
Func<int, int, int> funcTarget = new Func<int, int, int>(Add);
int result = funcTarget.Invoke(40, 40);
Console.WriteLine("40+40={0}", result);
定義兩個參數int類型,傳回一個int類型的傳回值。
對于内置委托的使用,簡化了自定義委托帶給我們的繁瑣,不過隻是講述了一下Action<>和Func<>的使用,未完待續……