Относительно «проблемы» с сборщиком мусора: сборщик мусора не собирает переменных , он собирает объектов .Строковый объект все еще создается при вашем втором подходе, вы просто не берете его для собственного использования.
Они почти одинаковы, с той разницей, что второй дважды вызывает Directory.GetCurrentDirectory
, и поэтомусоздание второго строкового объекта.Вопреки тому, что вы подумали, тот, который выполняет дополнительную работу на сборщике мусора, является вторым вариантом.
Независимо от производительности, гораздо проще и безопаснее (без условий гонки) просто сохранить его значение в переменной для дальнейшегоиспользуйте.
Чтобы получить путь к родительскому каталогу, я бы использовал метод Path.GetDirectoryName
, поскольку он делает код намного более понятным, коротким и переносимым:
string path = Path.GetDirectoryName(tmp);