从函数返回对象

时间:2012-02-08 03:04:26

标签: asp.net .net vb.net oop

如果在函数内创建了一个对象,并且该函数返回该类型的对象,那么如何处理内存。

示例:

Public Function GetEmployee(employeeid as integer) as employee

Dim oEmployee as new employee
oEmployee.FirstName="Bob"
...
...

return oEmployee
end function

接收对象的变量是否仍然是指向函数内部使用的内存位置的指针?

当您执行oEmployee2=oEmployee

oEmployee2只是一个指针吗?对oEmployee的任何更改现在都会影响另一方。只是试图从内存的角度来理解它以及该范围如何工作

由于

2 个答案:

答案 0 :(得分:2)

假设employee引用类型(例如任何类),该方法将向对象实例返回一个引用(在概念上类似于非托管语言中的指针)(通常在堆)。由于只存在一个对象实例,因此对它的所有更改都将影响实例。

如果employee值类型(例如任何结构或基本类型),则返回实例的单独副本。

答案 1 :(得分:1)

假设oEmployee是引用类型(不是结构),如果将其作为参数传递,则传递引用。在.NET中,您应该根据引用类型与值类型进行思考。

这篇文章真的帮助我理解了在我开始时如何分配内存。

http://www.c-sharpcorner.com/UploadFile/rmcochran/csharp_memory01122006130034PM/csharp_memory.aspx