В данном конкретном случае происходит то, что объект foo
вместе с вашим делегатом передается методу Bar.Метод Bar вызывает действие, которое вызывает DoSomething для foo, а затем возвращает.
Поскольку метод Bar не возвращает ни объект, который вы передаете ему, ни результат вызова делегата, ни соответствующий кодссылка на объект нигде не хранится, созданный вами объект foo
теперь имеет право на сборку мусора после возврата Bar.
Точно, когда память для этого объекта будет восстановлена, зависит от того, когда GC будет работать, нов какой-то момент после возвращения Bar память, выделенная для объекта, будет восстановлена.Это не произойдет сразу, т.е.как часть возвращения Бар.