C#返回局部变量

时间:2014-03-16 03:26:14

标签: c# local-variables

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

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

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

1 个答案:

答案 0 :(得分:13)

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

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