Возвращение объекта из функции - PullRequest
0 голосов
/ 08 февраля 2012

Если объект создан внутри функции и функция возвращает объект такого типа, как обрабатывается память.

Пример:

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 ]

2 голосов
/ 08 февраля 2012

Предполагая, что employee является ссылочным типом (например, любой класс), метод вернет ссылку (аналогичную в принципе указателю в неуправляемых языках) на экземпляр объекта (обычно в куче).Поскольку существует только один экземпляр объекта, все изменения в нем будут влиять на экземпляр.

Если employee - это тип значения (например, любой тип структуры или примитива), то отдельная копия экземпляравозвращается.

1 голос
/ 08 февраля 2012

Предполагая, что oEmployee является ссылочным типом (не структурой), если вы передаете его в качестве аргумента, вы передаете ссылку.В .NET вы должны думать с точки зрения типов ссылок и типов значений.

Эта статья действительно помогла мне понять, как выделяется память, когда я только начинал.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...