с C ++ на C #: никогда не возвращать ссылку на локальный объект?

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

5
задан athos 3 July 2011 в 15:45
поделиться