从函数返回对象
问题描述:
如果在函数内部创建一个对象并且该函数返回该类型的对象,则如何处理内存。从函数返回对象
实施例:
Public Function GetEmployee(employeeid as integer) as employee
Dim oEmployee as new employee
oEmployee.FirstName="Bob"
...
...
return oEmployee
end function
这是否接收仍在对象的指针一个在该函数内使用的存储器位置中的变量?
当你做一个oEmployee2=oEmployee
关于什么是oEmployee2只是一个指针?现在,对员工的任何更改都会影响到其他人。只是想从记忆的角度理解和范围是如何工作的
感谢
答
假设oEmployee是一个引用类型(不是结构体),如果您将它作为参数传递,那么您传递的是引用。在.NET中,您应该考虑引用类型与值类型。
这篇文章确实帮助我理解了当我刚开始时如何分配内存。
http://www.c-sharpcorner.com/UploadFile/rmcochran/csharp_memory01122006130034PM/csharp_memory.aspx
答
假设employee
是引用类型(例如任何类),该方法将在引用(在概念上类似于返回一个指针非托管语言)到对象实例(通常在堆上)。由于只存在一个对象实例,所以对其进行的所有更改都会影响实例。
如果employee
是值类型(例如,任何结构或基元类型),则返回实例的单独副本。
阅读了在C#,例如参考VS值类型在这里:http://www.albahari.com/valuevsreftypes.aspx – BrokenGlass 2012-02-08 03:06:46