Пока у группы методов SomeObject.SomeMethod
есть метод с типом возврата void
и без параметров, разницы нет. Это потому, что ThreadStart
определяется как delegate
, который возвращает void
и не принимает параметров, и, следовательно, существует неявное преобразование из группы методов SomeObject.SomeMethod
в ThreadStart
. Таким образом, оба вызывают перегрузку Thread(ThreadStart)
конструктора Thread
.
Соответствующий раздел спецификации языка - §6.6 (Преобразование групп методов).
У меня простой вопрос: в чем преимущество создания экземпляра делегата C # по сравнению с простой передачей ссылки на функцию?
Итак, просто исправление терминологии здесь. С
class MyObject {
public void SomeMethod() { }
}
MyObject someObject = new MyObject();
вещь, обозначаемая someObject.SomeMethod
, является группой методов. Вы можете просто думать об этом как о множестве перегруженных методов, которые можно искать, используя обозначение someObject.SomeMethod
.