以委托为中介来转换,进而可以函数作函数的参数传递函数

这个小例子来自网上,经过自己的测试可以运行,前线明白的解释了委托--delegate。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace JackDanielsConsoleApplication
{
class Program
{
static void Main(string[] args)
{
MyClass p = new MyClass();

p.InstanceMethod(); //直接调用的方式
MyClass.StaticMethod(); //直接调用的方式

// Map the delegate to the instance method:
MyDelegate d = new MyDelegate(p.InstanceMethod);
d(); //以委托为中介,进行转换,进而可以函数 作函数的参数传递函数

// Map to the static method:
d = new MyDelegate(MyClass.StaticMethod);
d(); //以委托为中介,进行转换,进而可以函数 作函数的参数传递函数

Console.ReadLine();
}
}

// delegate declaration
delegate void MyDelegate();

public class MyClass
{
public void InstanceMethod()
{
Console.WriteLine("A message from the instance method.");
}

static public void StaticMethod()
{
Console.WriteLine("A message from the static method.");
}
}
}

最近写的代码使用了如下的delegate语句:

                                    

timer1.Elapsed += delegate(object sender, ElapsedEventArgs e)
{
TheOut(sender, e, 0, mDevicIP);
};
timer1.AutoReset = false;
timer1.Start();
………省略………………………
private void TheOut(object source, ElapsedEventArgs e,int index,string deviceIP)
{
foreach (Device d in DeviceList)
{
if (d.IPAdress == deviceIP)
{
d.timer1.Stop();
d.timer1.Close();
d.mDigigalInput[index] = false;
}
}
}




posted on 2012-02-07 10:25  cknife  阅读(200)  评论(0编辑  收藏  举报

导航