Нет, здесь нет никакого риска. Ссылка будет возвращена, и если сборщик мусора запустится, он сможет увидеть ссылку в main
, поэтому не освободит строку.
Обратите внимание, что даже если строка имеет значение , подходящее для сборки мусора, она не будет освобождена немедленно - только при следующем запуске сборщика мусора (или даже позже, в зависимости от того, в каком поколении он заканчивается) .
Обратите внимание, что сборщик мусора может собирать объекты, которые больше не будут использоваться, даже если переменная все еще находится в области видимости - при условии, что она знает, что переменная не будет прочитана снова:
object x = new object();
Console.WriteLine(x);
// Lots more code not touching x
// The object could be collected at any time here