問題タブ [ienumerator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
7 に答える
24857 参照

c# - 配列から汎用列挙子を取得する

C# では、特定の配列からジェネリック列挙子を取得するにはどうすればよいですか?

以下のコードでは、 はオブジェクトMyArrayの配列です。MyType示されている方法で取得したいのですMyIEnumeratorが、空の列挙子を取得しているようです (確認済みですがMyArray.Length > 0)。

0 投票する
6 に答える
24075 参照

c# - IEnumeratorの「HasNext」メソッドはありますか?

Javaでは、このメソッドをIterator使用してhasNext、反復に(要素を消費せずに)より多くの要素があるかどうかを判断しました。つまり、 「 」メソッドhasNextのようなものです。Peek

私の質問:C#のジェネリックsを使用した「 hasNext」または「 」メソッドのようなものはありますか?PeekIEnumerator

0 投票する
1 に答える
2109 参照

c# - 匿名型 IEnumerable からアイテムのサブセットを選択するにはどうすればよいですか?

次のコードがあります。

CodeDescriptionはbenefitCodeのプロパティではなく、顧客がdropDrownListでこのように表示することを望んでいるため、匿名タイプのルートに行かなければなりませんでした。とにかく私の質問は、このリストからアイテムのサブセットを選択するにはどうすればよいですか? BenInterest 属性に基づいて項目を選択する必要があります。

これはIEnumerableを返すので、このルートに行こうとしていますが、ここで行き詰まります。私の意図は、新しい IEnumerable リストを作成し、それにドロップダウン データソースを設定することです。

では、目的の項目のみを含む同じ匿名型の新しい Enumerable を作成するにはどうすればよいですか。

助けてくれてありがとう。乾杯、~ck

0 投票する
2 に答える
870 参照

c# - インターフェイスクラスからのIEnumeratorの呼び出し

私はコレクションを列挙するのは初めてなので、この質問がばかげているように聞こえても許してください。

クラスがあります

ご覧のとおり、上記で2つのインターフェイスを実装しています。1つはIPersonStuffで、もう1つはIEnumerableです。

Personクラスは単純なゲッター/セッターであり、各タイプは文字列(名前、住所、DateTimeであるdateofbirthを除く)などです。

そして私のIPersonStuffにはこれがあります:

作業が終わったら、次のように呼びたいと思います(どのクラスからでも)。

ただし、次のエラーが発生します。

  • 'IEnumerable <...>。GetEnumerator':明示的なインターフェイス宣言は、クラスまたは構造体でのみ宣言できます

基本的に、IPersonStuffインターフェイスを介してPersonStuffクラスにあるIEnumerator IEnumerable.GetEnumerator()を呼び出す方法を知りたいです。

0 投票する
4 に答える
2289 参照

c# - .Net IList の IEnumerator はリストの順序を提供しますか?

(インターフェイスからメソッドを呼び出すことによって)IEnumeratorから取得したが、リストの順序で項目を提供すると仮定できますか?IListGetEnumeratorIEnumerable

0 投票する
3 に答える
927 参照

c# - C#:カスタムIEnumeratorを実装する場所

を実装するクラスがあるとしますIEnumerable<T>。現在、メソッドでyieldキーワードを使用しています。GetEnumerator()しかし、今はもう少しやる必要があります。たとえば、自分の後で片付けたいと思います。これを行うには、何かを見落としていない限り、IEnumerator<T>インターフェイスを実装する必要があります。しかし、どこでそれをすべきだと思いますか?

クラス自体がそれを実装してGetEnumerator()返す必要がありthisますか?それとも、プライベートクラスに隠したほうがいいでしょうか?それとも、まったく別のクラスにする必要がありますか?これに対するいくつかの一般的な慣行は何ですか?

0 投票する
1 に答える
14195 参照

c# - CollectionBaseをLinqで使用可能なリストまたはデータ型に変換します

Asposeセルを使用してExcelスプレッドシートを操作しています。APIのタイプの1つは、スプレッドシート内の画像のコレクションです。これは、CollectionBaseから派生しています。

このリンクを参照してください: http ://www.aspose.com/documentation/.net-components/aspose.cells-for-.net/aspose.cells.pictures.html

この型をLinq式を使用できるものに変換したい

このためのオプションは何ですか?

私はそれを繰り返して手動で追加できると思いnew List<Picture> ますが、これを行うためのより良い方法はありますか?

私はこの質問を読みまし たCollectionBaseから派生したクラスにIEnumerable<T>を追加します

しかし、CollectionBaceはサードパーティ製品であるため、私は明らかにCollectionBaceを実装するクラスを制御できません。

0 投票する
3 に答える
316 参照

.net - IEnumerator を取得することは可能ですかT[]から?

デフォルトでスレッドセーフなコレクション クラスを作成するとします。

内部的に、クラスには という保護されたList<T>プロパティがありますValues

まず、クラスを実装することは理にかなっていますICollection<T>。このインターフェイスのメンバーの一部は、実装が非常に簡単です。たとえば、 をCount返しますthis.Values.Count

しかし、実装するには、(非ジェネリック)と同様ICollection<T>に実装する必要があり、これはスレッドセーフなコレクションには少し注意が必要です。IEnumerable<T>IEnumerable

もちろん、私はいつでもNotSupportedExceptiononIEnumerable<T>.GetEnumeratorとを投げることができましIEnumerable.GetEnumeratorたが、それは私にとって警官のように感じます.

getValuesロックして配列Valuesの形式でコピーを返すスレッドセーフ関数が既にあります。したがって、私の考えは、次のコードが実際にスレッドセーフになるように、返すことでT[]実装することでした:GetEnumeratorthis.getValues().GetEnumerator()

残念ながら、この実装IEnumerable.GetEnumeratorは汎用バージョンではなく でのみ機能するようです (したがって、上記のコードは をスローしますInvalidCastException)。

私が持っていた 1 つのアイデアは、それを呼び出す前にからのT[]戻り値をキャストすることでした。代わりに、最初に を返すように変更することもできますが、非ジェネリックの場合は、戻り値を非ジェネリックにキャストするだけです。しかし、これらのアプローチがずさんな感じなのか、それとも完全に受け入れられるのか、私には判断できません。getValuesIEnumerable<T>GetEnumeratorgetValuesIEnumerable<T>IEnumerable.GetEnumeratorgetValuesIEnumerable

いずれにせよ、これを行う方法についてより良い考えを持っている人はいますか? メソッドについて聞いたことがありますが、名前空間.Synchronized内の非ジェネリック コレクションでのみ使用できるようです。System.Collections.NET に既に存在する、私が知らない一般的なバリアントがあるのではないでしょうか?

0 投票する
6 に答える
1968 参照

c# - .NET に双方向列挙子がないのはなぜですか?

SO で、双方向列挙子を実装する方法について何度か尋ねられました (ここここ)。私の質問は、方法(ほとんどの場合は些細なことです) ではなく、.NET プラットフォームにそのような型が存在しない理由です。

明らかに、これを実装できない多くのコレクション型があります。これは、MoveNext()破壊的であるか、基になるコレクションの状態を変更するためです。しかし逆に、多くの型はこれを自明に実装できますList( 、IList、)。LinkedListarray

なぜそのようなタイプが存在しないのですか?

0 投票する
9 に答える
30073 参照

c# - 空のIEnumeratorを返します

特に、「public IEnumerator GetEnumerator()」メソッドを実装するインターフェイスがあるので、foreachステートメントでインターフェイスを使用できます。

このインターフェイスをいくつかのクラスに実装し、そのうちの1つで、空のIEnumeratorを返したいと思います。今、私はこれを次のようにしています:

しかし、これは醜いハックだと思います。空のIEnumeratorを返すより良い方法があると思わずにはいられません。ある?