Должен ли я вызвать Dispose () внутри функции после возврата? - PullRequest
9 голосов
/ 14 мая 2010

Должен ли я вызывать .Dispose () после возврата объекта, который реализует IDisposable?

myDisposableObject Gimme() {
  //Code
  return disposableResult;
  disposableResult.Dispose();
}

Другими словами, это объект, который я возвращаю копию, или это сам объект? Спасибо:)

Ответы [ 12 ]

0 голосов
/ 14 мая 2010

Вы не можете иметь .Dispose () в методе, который возвращается. Вызывающий должен реализовать это.

0 голосов
/ 14 мая 2010

myDisposableObject disposableResult = new myDisposableObject();

Здесь disposableResult - ссылка на новый созданный объект. Поэтому, когда вы возвращаете эту ссылку вызывающему методу, эта ссылка все еще указывает на созданный объект в куче. Следовательно, вы можете безопасно использовать его в вызывающем методе.

...