次のように単純化することもできます。
var myThread = new Thread(Work.DoWork);
myThread.Start();
違いはあまりありません。最初の例では、デリゲート インスタンスは名前を取得します。myThreadDelegate
これは、理論的にはメソッドで後で (おそらく別の目的で) 使用できます。
多くのレベルを含む 1 つの長い式を好むか、一時変数を含む多くの小さな式を組み合わせて好むかは、ほとんどが好みの問題です。
いずれにせよ、私の意見では、Work.DoWork
を書くよりも、単に のように、メソッド グループから暗黙的な変換を使用する方が簡単new ThreadStart(Work.DoWork)
です。How to: Declare, Instantiate, and Use a Delegate (C# Programming Guide)の文C# 2.0 provides a simple way to write theまえの宣言を参照してください。このより単純な方法は、正式にはメソッド グループ変換と呼ばれます。
var
キーワードの詳細については、Implicitly Typed Local Variables (C# Programming Guide)を参照してください。
もちろん、あなたの例の究極のワンライナーは次のようになります。
(new Thread(Work.DoWork)).Start();
その場合、新しいスレッド (の変数) への参照すら取得しません (インスタンス メソッドは をStart()
返しますvoid
)。