2017-12-25 5 views
-2

次のコードに型「無効」に変換できませんが、同じ仕事をしてスレッドを作成するための二つの方法が、唯一の1作品を示しています。違いは、私が見ているものとは異なり、変数の宣言です - なぜこれがError: Cannot implicitly convert type 'void' to 'System.Threading.Thread'につながるのか説明するのに役立つでしょうか?エラー:他にはない一方で、暗黙的に「System.Threading.Thread」

public MainWindow() 
{ 
    InitializeComponent(); 

    // Runs OK 
    new Thread(() => { MessageBox.Show("foo");}).Start(); 

    // Error: Cannot implicitly convert type 'void' to 'System.Threading.Thread' 
    Thread t = new Thread(() => { MessageBox.Show("foo”); }).Start(); 
} 
+1

スタートはvoidを返すと、あなたがメッセージをコンパイラにスレッド – Nkosi

+1

ご注意に割り当てるしようとしています。彼らは便利です。あるタイプを別のタイプに変換できないというメッセージは、ある種の割り当てでは、あるタイプの式をその割り当てのターゲットが必要とするタイプに変換できないことを示しています。あなたの場合、メソッドの戻り値を変数に代入しようとしていますが、そのメソッドは値を返していません。そのエラーメッセージのサイトを検索し、自分自身でエラーメッセージを理解するための十分な情報を持っていれば、ほんの一握りのQ&Aでマークされた重複を参照してください –

答えて

0

.Start()戻りvoid.Start()の結果をThread tに割り当てていますが、スレッド自体は割り当てていません。

あなたが行う必要があります。

Thread t = new Thread(...); 
t.Start(); 
関連する問題