Я видел несколько вопросов здесь, в SO, о том, как заставить делегата создать объект вместо использования ConstructorInfo.Invoke
.
Вот пример: Использование делегата для вызова конструктора .
Я просто хочу знать, почему? Если это с точки зрения производительности, почему делегат быстрее?
Обновление
Я понимаю, что при создании делегата вы избавляетесь от проверок при его повторном использовании. Это одно повышение производительности.
Но что происходит, когда конструктор вызывается через делегата? То же самое, что и при выполнении var a = new XXX()
или что-то еще?
ConstructorInfo.Invoke()
делает то же самое, что и new XXX()
? (Не обращайте внимания на любые проверки)
При использовании Activator.CreateInstance()
делайте это примерно так же, как и Constructor.Invoke()
(кроме поиска и проверки типов).
Полагаю, мой вопрос сводится к следующему: могут ли объекты создаваться разными способами (например, разными инструкциями IL) или все методы упоминания используют одни и те же инструкции, но с разными видами проверок перед фактическим созданием?