C# Action委託、Func委託
如果我們要把方法當作引數傳遞的話就要用到委託。簡單來說委託是一個型別,這個型別可以賦值一個方法的引用。
一 . Action委託
action委託指向的方法沒有返回值
c#程式碼如下:
class ActionTest
{
void printStr()
{
Console.WriteLine("printStr()");
}
void printStr(int i)
{
Console.WriteLine(i);
}
public void mainAction()
{
// action後面可以通過泛型去指定action指向的方法的多個引數型別,引數的型別跟action後面宣告的委託型別是對應這的
// action委託可以指向一個無返回值、無參的方法
Action ac = printStr; // action是系統內建(預定義)的一個委託型別
ac(); // 呼叫
Action<int> ac2 = printStr; // 定義了一個委託型別,這個型別可以指向一個沒有返回值、有一個引數的方法.在這裡方法中的引數最多可以16個
ac2(100);
}
}
二 . Func委託
如果委託需要有獲取返回值,那就要用到func委託
func委託要求必須指向帶返回值的方法
class FuncTest
{
// 如果委託需要有獲取返回值,那就要用到func委託
// func委託要求必須指向帶返回值的方法
int printInt()
{
return 999;
}
int printInt(string str)
{
Console.WriteLine(str);
return 1000;
}
public void mainFunc()
{
Func<int> fu = printInt; // func中的泛型型別指定的是方法的返回值型別
Console.WriteLine(fu());
Func<string, int> fu2 = printInt;// func後面可以跟很多型別,前面的引數是引數型別,後面的是返回值型別,引數型別必須跟指定方法的引數型別對應
Console.WriteLine(fu2("zhili"));
Console.ReadKey();
}
}