class Program
{
//生命委托
private delegate void Dele01();
private delegate void Dele02(string str);
static void Main(string[] args)
{
Dele01 dele01 = Test1;//委托指向一个方法
dele01();//执行方法
//多播委托
//当委托有返回值的时候绑定多个方法,接收最后一个方法的返回值
dele01 += Test2;
if(dele01!=null)
dele01();
//获取委托数组
Delegate[] delegates = dele01.GetInvocationList();
foreach(Delegate dele in delegates)
{
dele.DynamicInvoke();
}
//匿名方法
dele01 = delegate ()
{
};
//Lambda表达式
Dele02 dele02 = a => a+=a;
//func有返回值,最后一个参数是返回值
Func<int, int> func1;
func1 = Test4;
func1(10);
//action没有返回值 可以有参数
Action<string> action;
action = Test5;
action("hello");
}
private static void Test1()
{
Console.WriteLine("test1");
}
private static void Test2()
{
Console.WriteLine("test2");
}
private static void Test3(string str)
{
Console.WriteLine(str);
}
private static int Test4(int args)
{
Console.WriteLine(args);
return args;
}
private static void Test5(string str)
{
Console.WriteLine(str);
}
}