Code Bye

哪位能帮本人解释一下下面的几句代码的意思

using System;
using System.Threading;
namespace MultithreadingApplication
{
class ThreadCreationProgram
{
public static void CallToChildThread()
{
Console.WriteLine(“Child thread starts”);
}

static void Main(string[] args)
{
ThreadStart childref = new ThreadStart(CallToChildThread);
Console.WriteLine(“In Main: Creating the Child thread”);
Thread childThread = new Thread(childref);
childThread.Start();
Console.ReadKey();
}
}
}
本人想知道1,ThreadStart childref = new ThreadStart(CallToChildThread);
,2, Thread childThread = new Thread(childref);,
这两句代码的意思。觉得第一句有点多余的样子,为什么不直接Thread childThread = new Thread(CallToChildThread);这样写?

解决方案

40

Thread的构造函数中需要传入一个委托作为参数,你可以将委托看成是一个名片。名片的作用就是,我们将本人的名片给别人,别人可以通过名片找到本人。而不是把我们本人给别人,随时随地在别人身边让别人找本人,这是不现实的。而 new ThreadStart(CallToChildThread);就是生成一个委托,相当于给CallToChildThread方法创建一个名片Thread,这个过程是必不可少的。假如像你所说的直接传入函数名,而不是委托,那么在Thread的构造函数内部,它本人应该会自动的为其创建一个委托,只是微软没有这么做而已,它让编程的人本人创建委托,这样多了一句代码,但是会显得更灵活,编程者可以本人根据需要控制这个委托。所以两个情况基本上没差别。
顺带说一句ThreadStart是么有参数的委托,Thread还运行有参数的函数委托作为参数。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明哪位能帮本人解释一下下面的几句代码的意思