Translate from C to C#
From a micro-optimization perspective I have found that C# and the JIT tend to like things from left to right (post).
Ex: (((size - 1) &amp; size) != 0) and data.Length*size*2

With a macro and readability (verification) perspective I would be curious to see the performance difference between this method and just using List&lt;T&gt;.Add.

When it comes to performance you need to just measure it. On different machines if you can.