Здравствуйте, Sharov, Вы писали:
S>А почему тело Invoke на лету генерируется?
Потому что тело Invoke может быть уникальным для различных экземпляров делегатов одного и того же типа.
Причём, даже если тело Invoke было ранее создано для конкретного SomeObj.SomeMethod, всё равно каждый раз с 0-ля генерится Invoke конкретно для типа SomeObj и его метода SomeMethod.
Т.е., с каждым экземпляром делегата растёт и память, занимаемая областью кода.
И финализация делегатов от этого тоже чуть дороже, потому что надо убирать память из сегментов кода, а там с перемещениями и уплотнениями не так всё радужно, как в сегментах данных.