从C++到C#:永远不会返回对本地对象的引用?

ath*_*hos 5 c# garbage-collection

在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!
 }
Run Code Online (Sandbox Code Playgroud)

"此函数在运行时将失败,因为它返回对本地对象的引用.当函数结束时,将释放ret所在的存储.返回值指的是程序不再可用的内存."

问题:这仍然适用于C#吗?或者引入GC无关紧要?

dtb*_*dtb 5

无法在.NET中返回对局部变量的引用

请参阅:为什么C#不支持引用的返回?

另请参阅:Ref return和ref locals(Eric Lippert的博客)