ref

Why pass an array by reference to the Array.Resize() method?

The abstract Array class has a static method Array.Resize(ref T[] array, int newSize), which, as you can see, takes the first ... mory in the heap and it creates a new reference to this memory or uses an existing one, that's where the "bastard is buried".