委托
定义方式举例:public delegate void DogFunction(int a)
该类型的委托针对返回值类型为void,参数类型为单个int的方法
for exeample:void method(int a)
形象解释下委托:可以看作是在窗口买票事件,委托相当于特定窗口,方法相当于特定人群,不同的人群需要在不同的窗口买票。一种类型对应一种类型,公共规则不能乱,委托与委托的对象也是如此。
表现形式:`
Example ex = new Example();
DogFunction dog = new DogFunction(ex.test1);
dog(18); // 相当于 ex.test1(18)
// ex.test1(18);
dog = new DogFunction(ex.test2);
dog(19); // ex.test2(19);`
委托的作用:个人觉得·委托的好处在于简化,在方法较多的情况下,每个方法都需要实例化,使用委托可以将同一种类型的方法都代表了,简单明了。
线程
c#线程可以使用委托的方法来实现定义方式举例:
MyCounter counter = new MyCounter();
Thread t = new Thread(new ThreadStart(counter.Run));
t.Start();
说明:t.IsBackground = true;//设TRUE的线程则主线程退出就退出,设FALSE的线程则继续执行。MyCounter 是一个类,run是里面定义的一个方法,使用委托实现线程中的一些功能
定时器
表现形式:
Timer timer = new Timer(new TimerCallback(SimpleJob)
, null
, 1000//第一次间隔时间
, 1000);//前后间隔时间
public static void SimpleJob(object state)
{
for (int i = 1; i <= 3; i++)
{
Console.WriteLine( i );
Thread.Sleep(350);
}
Console.WriteLine("... OK ");
}
定时器和线程差不多,以上是我对他们的理解,暂时理解到这种程度,如果有不对的地方希望批评指正