public void AddAtIndex(int index, T newElement) { if (index >= this.Capacity || index < 0) { throw new IndexOutOfRangeException(String.Format( "Invalid index: {0}.", index)); } var temp = new GenericList <T>(); for (int i = index; i < this.Count; i++) { temp.Add(this.elements[i]); } this.elements[index] = newElement; for (int i = 0, j = index + 1; i <= temp.Count; i++, j++) { this.elements[j] = temp.elements[i]; } this.Count++; }