たくさんの回答ありがとうございます。
「i.MoveNext()により、実際にGetEnumerator()が呼ばれる」と思った理由は、>>253が書いてくれてるように、
デバッガでステップ実行すると、MoveNext()を呼んだタイミングでGetEnumerator()の中に入っていくためです。
皆のおかげで、その考えが誤りであることがわかりました。
ただ、
IEnumerator i = collection.GetEnumerator(); // @
i.MoveNext() // A
については、まだイマイチ自信がないんですが…。
全員のレスをつなぎ合わせて、下記のように理解したのですが、あってますでしょうか?
@で、
・GetEnumerator()により、ジェネリック版IEnumerator<T>を実装したクラスのインスタンスが生成される
・そのクラスは、ジェネリック用と非ジェネリック用の2つのMoveNext()を持つ
(IEnumerator<T>はIEnumeratorを継承しているため、両方のMoveNext()が作られる)
・ジェネリック用のMoveNext()の内容は、ジェネリック版のyield returnブロックから生成される
・非ジェネリック用のMoveNext()は、ジェネリック版のMoveNext()のラッパーである
Aで、
・iは非ジェネリックのIEnumeratorなので、非ジェネリック用のMoveNext()が呼ばれる
・それにより、ラップされているジェネリック用のMoveNext()が呼ばれ、結果として、
「ジェネリック版のyield returnブロックから生成された処理」が呼ばれる。
以上、よろしくお願いします。
探検
ふらっと C#,C♯,C#(初心者用) Part129 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
254240 (ワッチョイ 8bbe-2WTa)
2017/06/18(日) 17:54:39.05ID:3NNsYvIS0■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★6 [ぐれ★]
- 「日の丸にバツ印」掲げた大学生 あいまいな国旗損壊罪に「怖い」 The Mainichi [少考さん★]
- 【音楽】BARBEE BOYS・KONTAが事故で四肢麻痺を公表、新体制で活動は継続 [少考さん★]
- 【テレビ】25年ぶり復活「炎のチャレンジャー」南原清隆&菊池風磨がMC 懐かし「電流イライラ棒」も [湛然★]
- 中国「捜索レーダー起動は各国の通常の手法」 火器管制用か回答せず [蚤の市★]
- 【映画】「果てしなきスカーレット」入場者プレゼント実施 細田守監督描き下ろし「歴代ヒロイン」色紙7種をランダム配布 [muffin★]
- 色づく世界の明日からっておもろい?
- 【閲覧注意】ちずちんな
- ぺこーら、地震で同僚が次々配信を止めるなか強行し続けるので悪目立ちするwww [268244553]
- 高市総理、睡眠時間30分😢
- フェリーの魅力を語ろう。
- 引越したんだがかなり大変だな
