What happens when value types are created?

Posted by Bob on Stack Overflow See other posts from Stack Overflow or by Bob
Published on 2010-03-15T18:21:20Z Indexed on 2010/03/15 18:29 UTC
Read the original article Hit count: 282

Filed under:

I'm developing a game using XNA and C# and was attempting to avoid calling new struct() 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.

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?

Take, for instance, this code:

spriteBatch.Draw(tex, new Rectangle(x, y, width, height), Color.White);

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.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.

© Stack Overflow or respective owner

Related posts about c#