2017-01-31 5 views
0

Im confused. Документы говорят, что ожидается делегат ThreadStart или ParametrizedThreadStart, но можно передать ссылку на метод. Почему он согласен с простой ссылкой на метод, почему нет никакой подписи конструктора, которая конкретно определяет это? Или делегат функционально идентичен ссылочной ссылке метода, когда дело доходит до проверки типа? Я очень неопытный, когда дело доходит до .net, и это очень сбивает с толку.Почему я могу передать имя функции в конструктор System.Threading.Thread

Заранее спасибо.

+0

Одна строка кода стоит несколько абзацев иногда ... – Sinatr

+0

Когда вы передаете имя функции, которую он создаст делегат функции, которая inferes в Params/типы возврата из функции подпись, поэтому в конце скомпилированный код будет таким же. – Gusman

+1

Или, может быть, [этот] (http://stackoverflow.com/q/6056983/1997232)? – Sinatr

ответ

0

Делегат является «ссылкой на метод», и по определению ссылка на метод тоже. Таким образом, два эквивалентны:

var thread = new Thread(new ThreadStart(MyMethod)); 
// or 
var thread = new Thread(MyMethod); // Assuming Mymethod conforms to the right spec 
Смежные вопросы