C#返回局部变量

Ben*_*n Y 7 c# local-variables

来自C++,返回一个局部变量是一个坏主意(当在堆栈上分配内存时).

现在使用C#我得到的印象不是一个坏主意(返回值时,而不是引用).

这是为什么?我理解C#使用GC,但我不确定在这种情况下会产生什么不同.

Bri*_*sen 14

C/C++中的问题是您可以返回指向堆栈中数据的指针.如果这样做,一旦堆栈帧被销毁,指针就无效.在托管C#中你不能做这样的事情.

在C#中返回本地人很好.如果返回值类型,则复制该值.如果返回引用,则会复制引用本身(但它仍指向堆上的同一对象).在任何一种情况下,都没有问题.