В C ++ есть совет: «Никогда не возвращать ссылку на локальный объект», как указано ниже в «C ++ Primer»:
"При возврате ссылки необходимо понимать одну важную вещь: никогда не возвращать ссылку на локальную переменную.
"Когда функция завершает работу, память, в которой были выделены локальные объекты, освобождается. Ссылка на локальный объект ссылается на неопределенную память после завершения функции. Рассмотрим следующую функцию:
// Disaster: Function returns a reference to a local object
const string &manip(const string& s)
{
string ret = s;
// transform ret in some way
return ret; // Wrong: Returning reference to a local object!
}
"Эта функция завершится с ошибкой во время выполнения, поскольку она возвращает ссылку на локальный объект. Когда функция завершается, память, в которой находится ret, освобождается. Возвращаемое значение относится к памяти, которая больше не доступна программе. «
Вопрос: так это все еще относится к C #? или это не имеет значения, как вводится GC?