Action的使用
class Program
{
static void PrintString()
{
Console.WriteLine("Hello Word");
}
static void PrintInt(int i)
{
Console.WriteLine(i);
}
static void PrintString(string str)
{
Console.WriteLine(str);
}
static void PrintDoubleInt(int i1,int i2)
{
Console.WriteLine(i1+i2);
}
static void Main(string[] args)
{
//Action a = PrintString; //action 是系統內置(預定義)的一個委託類型,它可以指向一個沒有返回值,沒有參數的方法
//Action<int> a= PrintInt;//定義了一個委託類型,這個類型可以只想一個沒有返回值,有一個int參數的方法
//Action<string> a = PrintString;//定義了一個委託類型,這個類型 可以只想一個沒有返回值,有一個string參數的方法,在這裏系統會自動尋找匹配的方法
Action<int, int> a = PrintDoubleInt;
a(34, 23);
Console.ReadKey();
//Action 最大可以有16個參數
//action 可以後面通過泛型去指定action指向的方法的多個參數的類型,參數的類型跟action後面聲明的委託類型是對應着的
}
}
Func的使用
class Program
{
static int Test1()
{
return 1;
}
static int Test2(string str)
{
Console.WriteLine(str);
return 100;
}
static int Test3(int i, int j)
{
return i + j;
}
static void Main(string[] args)
{
//Func<int> a =Test1; // func中 的泛型類型指定的是方法的返回類型值
//Console.WriteLine(a());
//Console.ReadKey();
// Func<string, int> a = Test2;//func 後面可以跟很多類型,最後一個類型是返回值類型,前面的類型是參數類型,參數類型必須跟指向的方法的參數類型按照順數對應
Func<int, int, int> a = Test3;
int res= a(1, 5);
Console.WriteLine(res);
Console.ReadKey();
}
}