Alex Rivera | Logout

Should I call Dispose() within a function after Return?

Asked 2010-05-14T09:19:03.853
9

Should I call .Dispose() after returning an object that implements IDisposable?

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

In other words, is the object I return a copy, or is it the object itself? Thanks :)

Edit
Report

1 Answer

8

One thing that none of the answers so far have mentioned is that you should dispose the object if Gimme() throws an exception. For example:

MyDisposableObject Gimme() 
{
    MyDisposableObject disposableResult = null;
    try
    {
        disposableResult = ...

        // ... Code to prepare disposableResult

        return disposableResult;
    }
    catch(Exception)
    {
        if (disposableResult != null) disposableResult.Dispose();
        throw;
    }
}
answered 2010-05-14T11:02:13.920

Your Answer