2012-05-07 2 views
4

Извините, если это было задано раньше, но я хотел бы получить краткий ответ о различиях между следующими двумя обычаями. Кажется, что VS принимает оба из них как действительный код.В чем разница между новой Thread (void Target()) и новой Thread (новый ThreadStart (void Target()))?

private static void doSomeWork() 
{ 
    //do some work 
} 

public someClass() 
{ 
    //Thread thread = new Thread(doSomeWork); 
    //or 
    //Thread thread = new Thread(new ThreadStart(doSomeWork)); 
} 
+1

Посмотрите на http://stackoverflow.com/questions/3360555/how-to-pass-parameters-to-threadstart-method-in-thread –

+0

Очень похоже на: http://stackoverflow.com/questions/2749868/new-eventhandlermethod-vs-method – CodesInChaos

+0

возможный дубликат [C# делегирование делегата или просто передача справочника метода] (http://stackoverflow.com/questions/2181282/c-sharp-delegate-instantiation-vs-just -passing-the-method-reference) – nawfal

ответ

6

Единственное отличие состоит в том, что первый не работает в C# 1. Компилятор C# 2, а затем, переводит первый во второй.

Группы методов неявно конвертируются в типы делегатов с совместимой сигнатурой. Эта функция называется «(неявным) преобразованием группы методов». Иногда вам нужен второй, чтобы управлять разрешением перегрузки, но здесь это не так.

+0

это было быстро. спасибо, ответ был очень ясен. –

Смежные вопросы