using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Action委托
{internal class Program{static void PrintString(){Console.WriteLine("hello world.");}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> b=PrintInt;//定义了一个委托类型,这个类型可以指向一个没有返回值,有一个int参数的方法Action<string> c = PrintString;//定义了一个委托类型,这个类型可以指向一个没有返回值,有一个string参数的方法,因为叫PrintString的方法有两个,在这里系统会自动寻找匹配的方法Action<int, int> d = PrintDoubleInt;d(34, 23);Console.ReadKey();//Action可以通过泛型去指定Action指向的方法的多个参数的类型,参数的类型跟Action后面声明的委托类型是对应着的}}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Func委托
{internal 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());Func<string,int> b=Test2;//func后面可以跟很多类型,最后一个类型是返回值类型,前面的类型是参数类型,参数类型必须跟指向的方法的参数类型按照顺序对应Func<int,int,int> a=Test3;//func后面必须指定一个返回值类型,参数类型可以有0-16个,先写参数类型,最后一个是返回值类型int res = a(1, 5);Console.WriteLine(res);Console.ReadKey();}}
}