Как уничтожаются объекты и надо ли их самому уничтожать?
Как виртуальная машина .NET понимает, что объект пора уничтожать? И когда это происходит?
Подробно про сборщик мусора можно почитать тут:
https://habr.com/ru/post/125968/  (не самая актуальная статья, но в целом ок)
https://habr.com/ru/company/clrium/blog/463293/
https://github.com/dotnet/coreclr/blob/master/Docu...

Вкратце, он отслеживает все ссылки на объекты, и если к объекту уже точно никто не сможет обратиться - уничтожает его.
Точный момент времени уничтожения объекта в общем случае сложно назвать
Что будет если нужно выполнить код выше в цикле? То есть будет создано множество объектов.
По идее они мне в дальнейшем не нужны. Как только я получил return (имя папки), этот объект мне не нужен.
И если всё это в цикле, логично будет сразу уничтожить объект.
В этом случае GC очень быстро их соберёт, тк единственная ссылка на этот объект была в переменной в этом методе.
Самостоятельно ничего делать не надо.
Никакой утечки памяти не будет.

Правда если этот код будет выполняться уж очень часто, и он является горячим местом - имеет смысл отказаться от   FileInfo, и парсить пути без засирания кучи.
CLRium #5: Garbage Collector. 2019 год 
Расширяет понимание работы GC, выделения и использования памяти и т.п. Но без предварительно чтения соответствующего материала, например, у Рихтера, понять будет сложно.