What happens when value types are created?
<p>I'm developing a game using XNA and C# and was attempting to avoid calling <code>new struct()</code> type code each frame as I thought it would freak the GC out. "But wait," I said to myself, "struct is a value type. The GC shouldn't get called then, right?" Well, that's why I'm asking here.</p>

<p>I only have a very vague idea of what happens to value types. If I create a new struct within a function call, is the struct being created on the stack? Will it simply get pushed and popped and performance not take a hit? Further, would there be some memory limit or performance implications if, say, I need to create many instances in a single call?</p>

<p>Take, for instance, this code:</p>

<pre><code>spriteBatch.Draw(tex, new Rectangle(x, y, width, height), Color.White);
</code></pre>

<p>Rectangle in this case is a struct. What happens when that new Rectangle is created? What are the implications of having to repeat that line many times (say, thousands of times)? Is this Rectangle created, a copy sent to the Draw method, and then discarded (meaning no memory getting eaten up the more Draw is called in that manner in the same function)?</p>

<p>P.S. I know this may be pre-mature optimization, but I'm mostly curious and wish to have a better understanding of what is happening.</p>
