回答:foreachでトラバース可能なオブジェクトは、スーパーインターフェースIEnumeratorまたは宣言されたGetEnumeratorメソッドを実装するタイプのコレクションまたは配列オブジェクトでなければなりません Q: でも普段はforeachを使っているので、そのまま使うので問題ありません。 なぜそうなったのかお聞きしてもよろしいでしょうか? 質問で求められているスーパーインターフェースIEnumeratorや宣言されたGetEnumeratorメソッドのタイプを実装したい場合、どうすればよいでしょうか? ありがとうございます 回答:foreachを使う際は、通常システム定義のcollectionクラス(ICollectionインターフェースを実装)を使用します。 例えば、arrayList、stringDictionary、arrayなどです。 これらはプラットフォームによってパッケージ化されており、IEnumeratorインターフェースの実装に近づいています。 書くクラスが同時にforeachできるようにするには、クラスを書く際にインターフェースを実装しなければなりません。 これにより、その後の各移動が可能になります。 例えば、人々のクラスを定義し、IEnumeratorインターフェースを実装します。 もし配列 People[] tempPeople が存在するなら、以下を使えます: foreach( p in tempPeople){ console.writeline(p.name); これにより、forループを使う手間がなくなります。 Iemumeratorインターフェースの実装方法についてですが、 MSDNを確認してください。 厚い本を探すのも良いでしょう。
|