下面来说一下与委托有关联的命名函数与匿名函数:当你用一个命名方法来实例化一个委托的时候,该方法会作为一个参数来传递,示例:
//声明一个委托
delegate void Del(int x);
//定义一个命名函数
void DoWork(int k)
{ /* */}
//使用该命名方法作为参数来实例化委托
Del d=obj.DoWork;
Invoking the delegate using 'MultiplyNumbers':
2 4 6 8 10
创建匿名方法实质上作为一个委托参数传递给一个代码块.
示例:
//创建一个委托实例
delegate void Del(int x);
//用匿名方法来实例化委托
Del d=delegate(int k)
{/*......*/};
由于使用匿名方法来实例化委托能够减少代码的开销,因为可以消除创建不同方法的需要.示例:
Using System.Threading
void StartThread()
{
Thread t1=new Thread
(delegate()
{
System.Console.WriteLine("Hello");
System.Console.WriteLine("World!");
});
t1.Start();
}
下面通过两种方法来实例化委托,并且当委托被调用时,显示相应的信息:
//实例化一个委托
delegate void Printer(string s)
class TestClass
{
static void Main()
{
//使用匿名方法来实例化委托
Printer p=delegate(string j)
{
Console.WriteLine(j);
} ;
//匿名委托调用的结果
p("The delegate using the anonymous method is called.");
//使用命名方法来实例化委托
p=new Printer(TestClass.DoWork);
//命名委托调用的结果
p("The delegate using the named method is called.");
//定义命名委托相关的方法
static void DoWork(string k)
{
Console.WriteLine(k);
}
}
}