C# でラムダ式 ThreadクラスとThreadStartデリゲート

class Program  
{  
    static void Main(string[] args)  
    {  
        string message = "スレッド内で表示する文字列:";  
        // 別スレッドで処理するラムダ式  
        ThreadStart action = () =>  
        {  
            for (int i = 0; i < 5; i++)  
            {  
                // 1秒スリープ  
                Thread.Sleep(1000);  
                // Mainメソッドのローカル変数を参照  
                Console.WriteLine(message + i);  
            }  
            // Mainメソッドの引数を参照  
            Console.WriteLine("argsの型={0}, argsのレングス={1}",  
                                      args.ToString(), args.Length);  
        };  
  
        // スレッドクラスにThreadStartデリゲート(今回はラムダ式)を渡す  
        Thread thread = new Thread(action);  
        // スレッド開始  
        thread.Start();  
        // スレッド終了まで待つ  
        thread.Join();  
  
        // <結果>  
        //スレッド内で表示する文字列:0  
        //スレッド内で表示する文字列:1  
        //スレッド内で表示する文字列:2  
        //スレッド内で表示する文字列:3  
        //スレッド内で表示する文字列:4  
        //argsの型=System.String[], argsのレングス=0  
    }  
}