Страницы

Поиск по вопросам

среда, 5 февраля 2020 г.

Разница между Invoke и обычным вызовом делегата через ()

#c_sharp #делегаты


В чём разница между Invoke и обычным вызовом делегата через () в C#?
    


Ответы

Ответ 1



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

Комментариев нет:

Отправить комментарий