如果在函数内创建了一个对象,并且该函数返回该类型的对象,那么如何处理内存。
示例:
Public Function GetEmployee(employeeid as integer) as employee
Dim oEmployee as new employee
oEmployee.FirstName="Bob"
...
...
return oEmployee
end function
接收对象的变量是否仍然是指向函数内部使用的内存位置的指针?
当您执行oEmployee2=oEmployee
oEmployee2只是一个指针吗?对oEmployee的任何更改现在都会影响另一方。只是试图从内存的角度来理解它以及该范围如何工作
由于
答案 0 :(得分:2)
假设employee
是引用类型(例如任何类),该方法将向对象实例返回一个引用(在概念上类似于非托管语言中的指针)(通常在堆)。由于只存在一个对象实例,因此对它的所有更改都将影响实例。
如果employee
是值类型(例如任何结构或基本类型),则返回实例的单独副本。
答案 1 :(得分:1)
假设oEmployee是引用类型(不是结构),如果将其作为参数传递,则传递引用。在.NET中,您应该根据引用类型与值类型进行思考。
这篇文章真的帮助我理解了在我开始时如何分配内存。
http://www.c-sharpcorner.com/UploadFile/rmcochran/csharp_memory01122006130034PM/csharp_memory.aspx