Then don’t use arrays, use linked list structures. Classes have objects of their own type that point to the next and previous ones. Search for linked list algorithms. There are many C# versions.
public int[] InserFunction(int[] inarr, int data, int position)
{
int[] outarr = new int[inarr.Length + 1];
outarr[inarr.Length] = data;
for (int ini = 0; ini < inarr.Length; ++ini) outarr[ini] = inarr[ini];
for (int i = inarr.Length; i > position; --i)
{
int ex = outarr[i];
outarr[i] = outarr[i - 1];
outarr[i - 1] = ex;
}
return outarr;
}
Then don’t use arrays, use linked list structures. Classes have objects of their own type that point to the next and previous ones. Search for linked list algorithms. There are many C# versions.
https://msdn.microsoft.com/en-us/library/he2s3bh7(v=vs.110).aspx
The questioner thinks too much, the linked list class is already available in .net.
The array size is immutable
With LinkedList, there is an AddFirst() method that can be added to the head of the list.