【发布时间】:2018-03-20 21:37:26
【问题描述】:
在 C++ 中,在方法中返回分配在堆栈上的对象的引用会产生垃圾值,因为堆栈对象在方法离开作用域后立即被销毁。鉴于在 C# 中结构是在堆栈上分配的,这是否也会产生垃圾值?
struct Test
{
//data
}
Test Foo()
{
Test t1 = new Test();
return t1;
}
【问题讨论】:
-
Given that in C# structs are allocated on the stack这是一个错误的假设,因此您从中得出的任何结论都没有意义。 -
C# 中的结构是按值传递的。你没有在这里返回参考,所以没有。
-
@Sweeper 所有在其返回类型中没有标记为
ref的方法都返回一个值,所有是的方法都返回一个引用.类型是相关的,重要的是方法的签名。