Benefit of Value Types over Reference Types?
<p>Seeing as new instances of value types are created every time they are passed as arguments, I started thinking about scenarios where using the <code>ref</code> or <code>out</code> keywords can show a substantial performance improvement.</p>

<p>After a while it hit me that while I see the deficit of using value types I didn't know of any advantages.<br/>
So my question is rather straight forward - <strong>what is the purpose of having value types? what do we gain by copying a structure instead of just creating a new reference to it?</strong></p>

<p>It seems to me that it would be a lot easier to only have reference types like in Java.</p>

<p><strong>Edit:</strong> Just to clear this up, I am not referring to value types smaller than 8 bytes (max size of a reference), but rather value types that are 8 bytes or more.</p>

<p>For example - the <code>Rectangle</code> struct that contains four <code>int</code> values.</p>
