コレクション内でコレクションList<T>
またはarraylistを使用している場合は、IEnumerableを実装して列挙子を返すだけで独自の列挙型クラスを作成する必要があります。私は、人々が独自の列挙型クラスを作成し、現在のmovenextなどを実装するオンラインの例を参照しています。独自のIEnumerableクラスを作成する場合
3
A
答えて
7
コレクションクラスを使用している場合、Enumerableである他のコレクションをラッピングするだけではなく、すべきだ。
しかし、私は常に、列挙型を手動で定義する場合でもyieldキーワードを使用する方が好きです。現在/移動を定義している人々のほとんどの例は、単に利回りや使用方法について知らないだけです。 (私は以前、その正確な理由でCurrent/Moveを定義する列挙可能なクラスを実装しました)
もう1つのケースは、基になるコレクションが古く、IEnumerable<T>
ではなくIEnumerable
を実装していない可能性があります。あなたのコレクションが強く型付けされている場合は、列挙子を返すだけではなく、少なくとも.Cast<T>()
呼び出しになります。
基本コレクションがある場合は、公開する必要のないプライベートネストされたクラス(カスタムキーと値のペアなど)のコレクションでもあります。これは、既存の列挙子を渡すのではなく、.Select呼び出しを返す必要がある場合です(実際には独自の反復子を実装する必要はありません)。
0
これらの例は、事前ジェネリックである可能性がありますか?ジェネリックを使用していなかった場合、IEnumerableを実装し、そのメソッドを実装する必要があることがわかります。
3
ファイルの行を繰り返し処理し、すべてをメモリにロードしたくないとします。すべてをメモリにロードするのではなく、要求に応じて次の行を読み取るIEnumerable<string>
を返すことができます。 @Servyのように、このような状況にはyield
を使用することをお勧めします。
関連する問題
- 1. 独自のロギングレベルの独自のログメソッドを作成する方法
- 2. 独自のデータ型を作成する
- 3. 独自のMD5コリジョンを作成する
- 4. 独自の.NETアセンブリキャッシュを作成する
- 5. 独自のエンコーディングを作成する
- 6. 独自のフォームデザイナの作成
- 7. 独自のデータソースの作成
- 8. php oauth peclまたは独自のクラスを作成
- 9. 独自のシステムバーを作成します
- 10. ユーザーがクラスの独自のインスタンスを作成できるようにする
- 11. 例/使用 - 独自のControllerFactoryを構築する場合?
- 12. 独自のunixコマンドを作成
- 13. Codeigniterで独自のbase_url()を作成
- 14. SQLで独自の列プロパティを作成
- 15. 独自の暗号化を作成
- 16. XElementを一度使用する場合は、インライン宣言または独自のオブジェクトを作成しますか?
- 17. JSON-LDの独自のカスタムコンテキストの作成
- 18. 独自のオブジェクトを生成するクラス関数
- 19. 独自のCSS属性を作成することは合法ですか?
- 20. 独自の認証を作成する場合、authenticate()はapplication_controllerに入りますか?
- 21. 独自のフラッシュデバッガの作成方法は?
- 22. 独自の文字列クラスを作成しようとしています
- 23. PowerShell 2.0で独自の属性クラスを作成できますか?
- 24. getResources()または独自の静的クラスを作成しますか?
- 25. ColdFusion:独自の「独自のJavaクラス」の使用について
- 26. C#でIEnumerableとしてクラスを作成するには?
- 27. なぜ独自のリクエストオブジェクトを作成するのですか?
- 28. BDS2006、C++:ダイアログを作成するための独自のフォームテンプレートの作成方法
- 29. 独自の依存関係をダウンロードするJavaアプリケーションの作成
- 30. 独自のテキストベースのデータストレージを作成する
オンラインで見つかった例は、C#でサポートされているイテレータブロックより前に記述されている可能性があります。 – phoog