コレクション内でコレクション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. uniform_int_distributionで独自の乱数クラスを作成する
- 3. 独自のパケットモニタを作成
- 4. 独自の.NETアセンブリキャッシュを作成する
- 5. 独自のMD5コリジョンを作成する
- 6. 独自のアサートクラスを作成する
- 7. 独自のエンコーディングを作成する
- 8. 独自のデータ型を作成する
- 9. 独自のインテリセンスを作成する
- 10. 独自のフォームデザイナの作成
- 11. 独自のデータソースの作成
- 12. php oauth peclまたは独自のクラスを作成
- 13. 独自のシステムバーを作成します
- 14. ユーザーがクラスの独自のインスタンスを作成できるようにする
- 15. kafka用の独自のカスタムパーティショナーを作成
- 16. C++独自のクラス内にオブジェクトの変更されたコピーを作成する
- 17. Codeigniterで独自のbase_url()を作成
- 18. 独自のunixコマンドを作成
- 19. SQLで独自の列プロパティを作成
- 20. 独自の暗号化を作成
- 21. 例/使用 - 独自のControllerFactoryを構築する場合?
- 22. Javaに既に独自のDateFormatクラスがある場合、Androidには独自のDateFormatクラスがあるのはなぜですか?
- 23. 独自のオブジェクトを生成するクラス関数
- 24. XElementを一度使用する場合は、インライン宣言または独自のオブジェクトを作成しますか?
- 25. Unity - 最初に呼び出す独自のStart()メソッドで2つのスクリプトを作成する場合は、
- 26. IEnumerable DropDownListを作成する
- 27. 独自の認証を使用する場合、Firebaseデータベースに独自のuidを提供できますか?
- 28. JSON-LDの独自のカスタムコンテキストの作成
- 29. Visual Studio 2015:プロジェクトが既に独自のgitリポジトリにある場合、独自のgit repoを作成する方法
- 30. 独自のCSS属性を作成することは合法ですか?
オンラインで見つかった例は、C#でサポートされているイテレータブロックより前に記述されている可能性があります。 – phoog