>>221
System.Collection.Generic.List<T>.GetEnumerator()の戻値の型は IEnumerator<T> ではなく、List<T>.Enumerator なので、シグニチャは関係あると思うのですが。

List<T>.GetEnumerator() を使用しても、新しくヒープにインスタンスが作られないように、IEnumerable<T> をわざわざ明示的に実装しているわけですし、先ほどのテストでもこれが正しいことは確認出来ると思います (コメントアウトを外した時の挙動で)。