委托与事件
1、委托
通过委托能够实现 把方法做为参数传递给另一个方法。如多线程
委托的使用方式和类的使用很相似。定义委托的位置和类一样,既可将其直接定义在名称空间之下,也可定义在某个类中。
委托的定义没有方法体,是用关键字delegate来表明它是一个委托,也可以在委托定义中使用访问修饰符public、private、protected等。
所有定义的委托都是继承自.net的System.Delegate类。
委托的构造函数总是带有一个参数,这个参数就是委托所要代表的方法,这个方法必须与定义委托时的签名完全匹配,不必考虑方法是静态的还是实例的。用下面的例了来说明。
下面的例子说明了如何通过
例:
using System;
namespace weituo
{
class Class1
{
[STAThread]
static void
{
MyDelegate d = new MyDelegate(MyClass.Square);//实例化委托,该实例代表的是MyClass类的Square方法,
d(2);
Console.ReadLine();
}
}
delegate void MyDelegate(float x); //定义委托
class MyClass
{
public static void Square(float x)//定义静态方法
{
float result = x * x;
Console.WriteLine("{0}的平方等于: {1}",x , result);
}
}
}
上面的实例说明了如何通过委托来调用方法,但是没有说明如何把一个方法作为参数传递给另一个方法。如下例:
using System;
namespace weitudiaoyongfangfa
{
class Class1
{
[STAThread]
static void
{
MyDelegate d = new MyDelegate(MyClass.Square);
ExecuteMethod(d,2);
}
static void ExecuteMethod(MyDelegate d,float x)
{
d(x);
}
}
delegate void MyDelegate(float x);
class MyClass
{
public static void Square(float x)
{
float result = x * x;
Console.WriteLine("{0}的平方等于: {1}",x,result);
}
}
}