1.委托
1.1定义及应用
委托是一种动静调用办法的类型,它与类、接口和数组雷同属于援用型。
注意事项:
委托实际上定义了一种办法的模板,只有返回值类型和形参列表与该模板统一,就都可用该委托类型进行实例化。
委托对象实质上代表了办法的援用。在.NET Framework 中,委托具备以下特点。
(1)委托相似于 C++函数指针,但与指针不同的是,委托是齐全面向对象的、平安的数据类型。
(2)委托容许将办法作为参数进行传递。
(3)委托可用于定义回调办法。
(4)委托能够把多个办法连贯在一起,这样在触发事件时,可同时启动多个事件处理程序。
委托(delegate)申明的个别模式:
[拜访修饰符] delegate 返回值类型 委托名( [参数列表] );
如:public delegate int Do( int x);
下面的语句申明了一个公开的名为“Do”的委托,该委托返回值类型为整型。
例如:public delegate void wt(int x);
定义一个没有返回值、带有整型参数的x的一个名叫wt的委托。
具体怎么应用接下来看看代码示例:
namespace C练习 { public delegate void wt(int x); class Program { public static void Add(int x) //定义了一个静态方法Add,留神该办法的返回值类型和参数与委托的雷同 { Console.WriteLine(x+x); //输入x+x的值 } public static void Cheng(int x)//同上 { Console.WriteLine(x*x); } static void Main(string[] args) { wt j = Add; //用委托定义j并调用Add办法 j += Cheng; //+代表在j的根底上增加Cheng办法 j -= Cheng;//-代表在j的根底上移除Cheng办法 j(3); } }}
那么输入的后果就为:6
1.2匿名办法:
将代码块作为参数传递,防止独自定义方法。
委托类型 委托变量名 =deletate (){};
namespace C练习{ public delegate void wt(string name); class Program { static void Main(string[] args) { wt wt1 = delegate (string name) { Console.WriteLine("{0},我是匿名办法。", name); }; wt1("张三"); } }}
2.事件
namespace C练习{ public delegate void wt(int x); public static void Add(int x) { Console.WriteLine(x+x); } public static event wt sj; static void Main(string[] args) { sj += Add; sj(8); } }