Кажется, что можно закрепить место в памяти делегата / функции, но это мешает главному преимуществу .NET GC: сжатие.
После завершения очистки GC каждый объект перемещается в память, чтобы быть смежным. Это делает и доступ и распределение быстрее, чем если бы куча была фрагментирована. Если вам нужно закрепить объект на месте в куче, GC придется обойти его, и если это будет сделано несколько раз, это может привести к некоторой нетривиальной фрагментации кучи. (Кстати, об этом говорится в статье, на которую ссылается Рон Уорхолик, с помощью GCHandle. Я не уверен, что это доступно за пределами управляемого C ++.)