Should disposable objects be passed in?
<p>In a code review a co-worker changed my code to pass in a Stream as a parameter.  He said this was to ensure that the responsibility to dispose of the object is clear to the caller.  In a sense I can empathize.  I would prefer the object creator to also be responsible for cleanup.</p>

<p>On the other other hand, neither method makes the need for a <code>using</code> any more clear.  I prefer the simpler method call as well.</p>

<p>Take</p>

<pre><code>    public static TextReader Serialize&lt;T&gt;(T obj) where T: new()
    {
        if (obj == null) throw new ArgumentNullException("obj");
        return Serialize&lt;T&gt;(obj, null);
    }
</code></pre>

<p>VS</p>

<pre><code>    public static void Serialize&lt;T&gt;(T obj, TextWriter outbound) where T : new()
    {
        if (obj == null) throw new ArgumentNullException("obj");
        Serialize&lt;T&gt;(obj, outbound, null);
    }
</code></pre>

<p>Is there any technical reason to add the extra param?</p>
