В 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 #? Или это не имеет значения, поскольку вводится сборщик мусора?