#c_sharp #делегаты
В чём разница между Invoke и обычным вызовом делегата через () в C#?
Ответы
Ответ 1
Для делегатов разницы между вызовом через d.Invoke(список аргументов) и d(список аргументов) нет. При этом генерируется одинаковый IL-код: вызов через скобки транслируется в Invoke. (Проверка.) Интересное синтаксическое отличие состоит в том, что проверка на null с Invoke-синтаксисом проще: d?.Invoke(список аргументов). Документация: Common Patterns for Delegates / Handling Null Delegates. Также для вызова через рефлексию вам понадобится использовать Invoke, т. к. скобки на уровне рефлексии никак не представлены.
Комментариев нет:
Отправить комментарий