delegate string Getstring();//定义一个委托类型
int x=4;
Getstring a=x.ToString; a指向x的ToString的方法
string s=a();//通过委托实例调用x.ToString的方法
string s=a.Invoke();通过invoke方法调用aa所引用的方法
Action 委托 系统内置的委托类型 指向一个没有返回值没有参数类型的方法
Action a=x.Tostring;
带有参数类型的,用泛型来约束参数类型 <>最多放置16个参数类型
Action<int>a; 定义一个带有参数int类型的 委托
Func 委托 系统内置 指向一个带有参数和返回值类型的方法
Func<int,int,int> a; 泛型最后一个为返回值类型前面的为参数类型
多播委托
Action a=test1; Actiona+=test2;
当委托没有指定任何类型时,会报空
多播委托调用时,按照添加的顺序执行。只返回最后一个方法的返回值
取得多播委托的每一个方法
Action a ;
Delegate[]delegates =a.GetInvocationList();
foreach(delegate d in delegates)
{
d.DynamicInvoke(null);
int x=4;
Getstring a=x.ToString; a指向x的ToString的方法
string s=a();//通过委托实例调用x.ToString的方法
string s=a.Invoke();通过invoke方法调用aa所引用的方法
Action 委托 系统内置的委托类型 指向一个没有返回值没有参数类型的方法
Action a=x.Tostring;
带有参数类型的,用泛型来约束参数类型 <>最多放置16个参数类型
Action<int>a; 定义一个带有参数int类型的 委托
Func 委托 系统内置 指向一个带有参数和返回值类型的方法
Func<int,int,int> a; 泛型最后一个为返回值类型前面的为参数类型
多播委托
Action a=test1; Actiona+=test2;
当委托没有指定任何类型时,会报空
多播委托调用时,按照添加的顺序执行。只返回最后一个方法的返回值
取得多播委托的每一个方法
Action a ;
Delegate[]delegates =a.GetInvocationList();
foreach(delegate d in delegates)
{
d.DynamicInvoke(null);
}
匿名方法
Func<int,int,int> plus=delegate(int a1,int a2){
return a1+a2;}
Lambda表达式
Func<int,int,int>plus=(a1,a2)=>{
return a1+a2;}
事件 Event 与委托的用法相同
事件只能在类中声明,只能在自身类中调用,不能在类的外不触发