問題タブ [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.
c# - 配列から汎用列挙子を取得する
C# では、特定の配列からジェネリック列挙子を取得するにはどうすればよいですか?
以下のコードでは、 はオブジェクトMyArray
の配列です。MyType
示されている方法で取得したいのですMyIEnumerator
が、空の列挙子を取得しているようです (確認済みですがMyArray.Length > 0
)。
c# - IEnumeratorの「HasNext」メソッドはありますか?
Javaでは、このメソッドをIterator
使用してhasNext
、反復に(要素を消費せずに)より多くの要素があるかどうかを判断しました。つまり、 「 」メソッドhasNext
のようなものです。Peek
私の質問:C#のジェネリックsを使用した「 hasNext
」または「 」メソッドのようなものはありますか?Peek
IEnumerator
c# - 匿名型 IEnumerable からアイテムのサブセットを選択するにはどうすればよいですか?
次のコードがあります。
CodeDescriptionはbenefitCodeのプロパティではなく、顧客がdropDrownListでこのように表示することを望んでいるため、匿名タイプのルートに行かなければなりませんでした。とにかく私の質問は、このリストからアイテムのサブセットを選択するにはどうすればよいですか? BenInterest 属性に基づいて項目を選択する必要があります。
これはIEnumerableを返すので、このルートに行こうとしていますが、ここで行き詰まります。私の意図は、新しい IEnumerable リストを作成し、それにドロップダウン データソースを設定することです。
では、目的の項目のみを含む同じ匿名型の新しい Enumerable を作成するにはどうすればよいですか。
助けてくれてありがとう。乾杯、~ck
c# - インターフェイスクラスからのIEnumeratorの呼び出し
私はコレクションを列挙するのは初めてなので、この質問がばかげているように聞こえても許してください。
クラスがあります
ご覧のとおり、上記で2つのインターフェイスを実装しています。1つはIPersonStuffで、もう1つはIEnumerableです。
Personクラスは単純なゲッター/セッターであり、各タイプは文字列(名前、住所、DateTimeであるdateofbirthを除く)などです。
そして私のIPersonStuffにはこれがあります:
作業が終わったら、次のように呼びたいと思います(どのクラスからでも)。
ただし、次のエラーが発生します。
- 'IEnumerable <...>。GetEnumerator':明示的なインターフェイス宣言は、クラスまたは構造体でのみ宣言できます
基本的に、IPersonStuffインターフェイスを介してPersonStuffクラスにあるIEnumerator IEnumerable.GetEnumerator()を呼び出す方法を知りたいです。
c# - .Net IList の IEnumerator はリストの順序を提供しますか?
(インターフェイスからメソッドを呼び出すことによって)IEnumerator
から取得したが、リストの順序で項目を提供すると仮定できますか?IList
GetEnumerator
IEnumerable
c# - C#:カスタムIEnumeratorを実装する場所
を実装するクラスがあるとしますIEnumerable<T>
。現在、メソッドでyield
キーワードを使用しています。GetEnumerator()
しかし、今はもう少しやる必要があります。たとえば、自分の後で片付けたいと思います。これを行うには、何かを見落としていない限り、IEnumerator<T>
インターフェイスを実装する必要があります。しかし、どこでそれをすべきだと思いますか?
クラス自体がそれを実装してGetEnumerator()
返す必要がありthis
ますか?それとも、プライベートクラスに隠したほうがいいでしょうか?それとも、まったく別のクラスにする必要がありますか?これに対するいくつかの一般的な慣行は何ですか?
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を実装するクラスを制御できません。
.net - IEnumerator を取得することは可能ですかT[]から?
デフォルトでスレッドセーフなコレクション クラスを作成するとします。
内部的に、クラスには という保護されたList<T>
プロパティがありますValues
。
まず、クラスを実装することは理にかなっていますICollection<T>
。このインターフェイスのメンバーの一部は、実装が非常に簡単です。たとえば、 をCount
返しますthis.Values.Count
。
しかし、実装するには、(非ジェネリック)と同様ICollection<T>
に実装する必要があり、これはスレッドセーフなコレクションには少し注意が必要です。IEnumerable<T>
IEnumerable
もちろん、私はいつでもNotSupportedException
onIEnumerable<T>.GetEnumerator
とを投げることができましIEnumerable.GetEnumerator
たが、それは私にとって警官のように感じます.
getValues
ロックして配列Values
の形式でコピーを返すスレッドセーフ関数が既にあります。したがって、私の考えは、次のコードが実際にスレッドセーフになるように、返すことでT[]
実装することでした:GetEnumerator
this.getValues().GetEnumerator()
残念ながら、この実装IEnumerable.GetEnumerator
は汎用バージョンではなく でのみ機能するようです (したがって、上記のコードは をスローしますInvalidCastException
)。
私が持っていた 1 つのアイデアは、それを呼び出す前にからのT[]
戻り値をキャストすることでした。代わりに、最初に を返すように変更することもできますが、非ジェネリックの場合は、戻り値を非ジェネリックにキャストするだけです。しかし、これらのアプローチがずさんな感じなのか、それとも完全に受け入れられるのか、私には判断できません。getValues
IEnumerable<T>
GetEnumerator
getValues
IEnumerable<T>
IEnumerable.GetEnumerator
getValues
IEnumerable
いずれにせよ、これを行う方法についてより良い考えを持っている人はいますか? メソッドについて聞いたことがありますが、名前空間.Synchronized
内の非ジェネリック コレクションでのみ使用できるようです。System.Collections
.NET に既に存在する、私が知らない一般的なバリアントがあるのではないでしょうか?
c# - 空のIEnumeratorを返します
特に、「public IEnumerator GetEnumerator()」メソッドを実装するインターフェイスがあるので、foreachステートメントでインターフェイスを使用できます。
このインターフェイスをいくつかのクラスに実装し、そのうちの1つで、空のIEnumeratorを返したいと思います。今、私はこれを次のようにしています:
しかし、これは醜いハックだと思います。空のIEnumeratorを返すより良い方法があると思わずにはいられません。ある?