<p>Is there a difference (performance, overhead) between these two ways of merging data sets?</p>
<pre><code>MyTypedDataSet aDataSet = new MyTypedDataSet();
aDataSet .Merge(anotherDataSet);
aDataSet .Merge(yetAnotherDataSet);
</code></pre>
<p>and</p>
<pre><code>MyTypedDataSet aDataSet = anotherDataSet;
aDataSet .Merge(yetAnotherDataSet);
</code></pre>
<p>Which do you recommend?</p>

Those two lines do different things.
The first one creates a new set, and then merges a second set into it.
The second one sets the ds reference to point to the second set, so:
```
```
MyTypedDataSet ds1 = new MyTypedDataSet();
ds1.Merge(anotherDataSet);
//ds1 is a copy of anotherDataSet
ds1.Tables.Add("test")

//anotherDataSet does not contain the new table

MyTypedDataSet ds2 = anotherDataSet;
//ds12 actually points to anotherDataSet
ds2.Tables.Add("test");

//anotherDataSet now contains the new table
```
```
Ok, let's assume that what you meant was:
```
```
MyClass o1 = new MyClass();
o1.LoadFrom( /* some data */ );

//vs

MyClass o2 = new MyClass( /* some data */ );
```
```
Then the latter is better, as the former creates an empty object before populating it.
However unless initialising an empty class has a high cost or is repeated a large number of times the difference is not that important.