>>244
@でジェネリック版のIEnumerator(を実装したクラスのインスタンス≠MyCollection<int>)を返している
AではそいつのMoveNextを普通に呼んでるだけ

そこで渡されているIEnumeratorの仕様に沿ったオブジェクトは
MyCollection<int>と別のクラスというのが
間違えやすいポイント

public IEnumerator<T> GetEnumerator()の
ジェネリック版のyield returnを含んだブロックから全然別のクラスが生成されていて
そいつのインスタンスが渡されている