Мне было бы интересно видеть то, что происходит, если Вы открываете одну из этих форм в разработчике и сохраняете ее; или измените его и сохраните его; или сделайте одно из вышеупомянутого после создания .designer.cs файла только с пустой оболочкой частичного класса. Меня не удивило бы найти разработчика, помещающего, по крайней мере, изменения в .designer.cs файл.
В общем случае List<T>::RemoveAt
равно O (N) из-за необходимости сдвигать элементы после индекса вверх по слоту в массиве. Но для конкретного случая удаления из конца списка сдвиг не требуется и, следовательно, это O (1)
Это должно дать вам представление
public void RemoveAt(int index) {
if ((uint)index >= (uint)_size) {
ThrowHelper.ThrowArgumentOutOfRangeException();
}
_size--;
if (index < _size) {
Array.Copy(_items, index + 1, _items, index, _size - index);
}
_items[_size] = default(T);
_version++;
}