Unfortunately, arrays are pre-fixed by design. This is important because it will reserve the necessary amout of memory at the heap.
So, to answer your requirement about not creating a new one: it won't be possible.
There is, however, a work-around. Look the following method:
Array.Resize(ref myArr, myArr.Length + 5);
It works as described at the source:
This method allocates a new array with the specified size, copies
elements from the old array to the new one, and then replaces the old
array with the new one.
If array is null, this method creates a new array with the specified
size.
If newSize is greater than the Length of the old array, a new array is
allocated and all the elements are copied from the old array to the
new one. If newSize is less than the Length of the old array, a new
array is allocated and elements are copied from the old array to the
new one until the new one is filled; the rest of the elements in the
old array are ignored. If newSize is equal to the Length of the old
array, this method does nothing.
This method is an O(n) operation, where n is newSize.
This means that myArr
will be updated to reference the new array. However, if there is another reference to the original array, this won't be updated (it will keep referencing the older version).
Source: MSDN