Возврат из функции без уничтожения объектов - PullRequest
2 голосов
/ 07 мая 2009

У меня есть функция в C # 2.0 под названием Foo (), которая возвращает значение типа boolean. Я создаю экземпляр объекта в функции, которую я не уничтожаю, прежде чем возвращать логическое значение. Я хочу знать, нужно ли уничтожать созданные объекты перед возвратом значения?

спасибо.

Ответы [ 4 ]

5 голосов
/ 07 мая 2009

Нет, это не так. Если ваш метод Foo создает типы значений , они расположены в стеке и, таким образом, очищаются при разматывании стека. Если вы создадите ссылочных типов , ваша ссылка на эти экземпляры выйдет из области видимости при выходе из метода, и поэтому экземпляры будут доступны для сборки мусора.

1 голос
/ 07 мая 2009

нет. если рассматриваемый объект не реализует IDisposable, в этом случае заключите его в оператор using () {}

0 голосов
/ 07 мая 2009

Было бы лучше, если бы вы использовали метод dispose для объектов ввода-вывода или базы данных. В противном случае при попытке изменить файл, на который ранее ссылались и который не был выпущен, может возникнуть исключение.

Вы также можете присвоить объекту null для удаления ссылки.

0 голосов
/ 07 мая 2009

В C # все объекты собираются мусором автоматически, и в основном нет способа явно освободить объект, поэтому нет необходимости уничтожать объекты вручную.

Если ваш объект содержит ресурс, вы хотите обязательно освободить ресурс, но вам не нужно (не может) уничтожать объект.

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