問題タブ [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.
.net - IEnumerableを何と呼びますか?
を参照するときに、どの単語を使用するかを考えていることがありますIEnumerable<Foo>
。読んでいるときに一貫した命名が見られないと思います。
IEnumerable<Foo>
:タイプ名です。文中で考えたり使用したりするときは役に立ちません。
コレクション:有効ですが、どこでも使用されているわけではありません。System.Collections名前空間がありますが。
シーケンス:それも有効であり、おそらくそれをより適切に定義します。
列挙子またはイテレータ:操作を強調し、めったに使用されません。
最も適切なものは何ですか?あなたはそれをあなたのコードで何を読みますか?
c# - 簡単な IEnumerator の使用 (例あり)
IEnumerator
C# で sを使用する方法 (理由ではない) を思い出すのに苦労しています。私はJavaに慣れており、初心者向けにすべてを非常にうまく説明している素晴らしいドキュメントがあります。どうぞ、ご容赦ください。
これらのボードの他の回答から学ぼうとしましたが、役に立ちませんでした。以前に尋ねられた一般的な質問をするのではなく、私にとって物事を明確にする具体的な例があります。
オブジェクトを渡す必要があるメソッドがあるとしIEnumerable<String>
ます。メソッドが行う必要があるのは、文字をイテレータ内roxxors
のすべての末尾に連結することだけです。String
次に、この新しい反復子を返します (もちろん、元のIEnumerable
オブジェクトはそのまま残ります)。
これについてどうすればいいですか?ここでの回答は、もちろん、私だけでなく、これらのオブジェクトに関する基本的な質問の多くにも役立つはずです。
c# - IEnumerable による変更の検出
まさにこの形式でまだ尋ねられていないことに驚いています。
データ ソースの反復処理 (および yield return ステートメントの使用) に基づいて生成された IEnumerable がある場合、Enumerator を介して生成された Enumerator を介したアクセス後にソースが変更されたことを検出するにはどうすればよいですか? GetEnumerator 呼び出し?
ここに奇妙な部分があります。私はマルチスレッドではありません。これは単純なはずなので、私の質問にはどこかに欠陥があると思います。. . ソースがいつ変更され、イテレータが古くなったか知りたいだけです。
どうもありがとう。
c# - foreachループでのキャッチ動作C#
簡単な質問だと思います->IEnumerableオブジェクトに対してforeachループを使用すると、架空のIEnumeratorオブジェクトが使用されていることがわかります。私の質問は次のとおりです。
オブジェクトを処理するforeachループで不正な動作を「キャッチ」するにはどうすればよいですか?特に、IEnumerableが作成された元のオブジェクトが変更されているかどうかを確認したいと思います。オリジナルが変更されている場合は、例外をスローしたいと思います。
私の現在のアプローチは、バージョン番号を使用することでした。これは、明示的なイテレータを作成してMoveNext()などを使用するとうまく機能しますが、foreachループはバージョンベースのアプローチをだましているようです。
c# - 複数のforeachに適切なIEnumeratorインターフェイスを実現するにはどうすればよいですか?
私は次のようなコードを持っています:
上記のコードではすべてが正常に機能していますが、次に使用する場合:
それは(括弧内の2番目のループで)出力します:0 1(0 1 2 3 4)の代わりに0 1(3 4)2 3 4私はリストとコレクションでそれをテストしました、そして彼らはそれを正しく行います。どうすれば必要なものを達成できますか?
ruby - 基本的な列挙子クラスを実装するにはどうすればよいですか?
Enumeratorクラスがどのように機能するかを理解しようとしています。具体的には、yielderオブジェクトがどのように作成され、コンストラクターが取得するコードブロックに渡されるのかわかりません。
これが私の最初の試みです:
もちろん、列挙子を進める方法がわからないため、機能していません。誰かが私がそれを実装する方法を理解するのを手伝ってもらえますか?
c# - ItemsSource を使用して WPF ListBox にデータを入力する - 良いアイデアですか?
私は (比較的) 経験豊富な Cocoa/Objective-C コーダーであり、C# と WPF フレームワークを独学しています。
Cocoa では、 を設定するときNSTableView
に、デリゲートとデータソースをビューに割り当てるのは比較的簡単です。次に、これらのデリゲート/データソース メソッドを使用して、テーブルにデータを入力し、その動作を決定します。
オブジェクトのリストを持つ単純なアプリケーションをまとめています。それらをDog
オブジェクトと呼びましょう。それぞれにpublic string name
. の戻り値ですDog.ToString()
。
オブジェクトは に表示されますListBox
。Cocoa の と同様のパターンを使用して、このビューに入力したいと思いNSTableViewDataSource
ます。現在、以下を使用して動作しているようです:
しかし、私はこれがどこまで正しいのか疑問に思っています。私が Visual Studio をインストールしてから 1 時間も経っていないので、自分が何をしているのかまったくわからないと言っても過言ではありません。
- これは正しいパターンですか?
- リスト ( ) に 2 番目の項目を追加すると
spot
、適切に更新されるように見えListBox
ますが、何が更新をトリガーするのでしょうか? Pound
バックグラウンド スレッドでを更新するとどうなりますか?ListBox
に自分自身を更新するように手動で依頼するにはどうすればよいですか? (私もする必要がありますか?)
行う必要があるとわかっている変更の 1 つIEnumerable<Dog>
は、実装を独自のクラスにリファクタリングするDogListItemsSource
ことです。
コメントで、大小を問わず、私が対処または心に留めておくべきその他のポイントを自由に指摘してください. 私はこれを正しい方法で初めて学びたいと思います。
c# - foreach ループ内で列挙子を手動でインクリメントする
特定の条件が満たされている間、列挙子を無期限に進めたい foreach ループ内にネストされた while ループがあります。これを行うには、列挙子を IEnumerator< T > (foreach ループ内にある場合はそうでなければなりません) にキャストしてから、キャストされたオブジェクトで MoveNext() を呼び出しますが、変換できないというエラーが表示されます。
参照変換、ボックス化変換、ボックス化解除変換、ラッピング変換、または null 型変換を介して、型 'System.DateTime' を System.Collections.Generic.IEnumerator に変換することはできません。
foreach ループ内で IEnumerator を手動でインクリメントする最良の方法は何ですか?
編集: while ループの後に、条件が満たされたときに実行したいコードがあることを示すように編集されました。そのため、while 内を手動でインクリメントし、それから抜け出し、続行するのではなく、トップに戻ります。 . これが不可能な場合は、自分のやり方を再設計するのが最善だと思います。
c# - IEnumerator を実装するクラスのシリアル化
シリアライズとデシリアライズを行うプログラムを作成しましたが、これは問題なく実行されます (サブクラスで適切に動作するようになったら、サブクラスに実装する予定です)。しかし、Foreach
.
これが機能しなかった後、インターフェイスとインターフェイスを実装しIEnumerator
、IEnumerable
必要なメソッドをクラスに追加する必要があることがわかりました。これでコレクションをループできます。
2つのことを組み合わせようとすると問題が始まります...
シリアル化するときに、最初にこのエラーが発生しました:
内部:
{"The type ThereIsOnlyRules.Army was not expected. Use the XmlInclude or SoapInclude attribute to specify types that are not known statically."}
[XmlInclude(typeof(Employee))]
この例外を防ぐためにクラスに追加しましたが、<ArrayofAnyType><AnyType>
代わりに最初の 2 つのルート要素が呼び出されるようになり<ArmyListing><Army>
ました。[XmlRoot("whatever")]
何らかの理由でそれらを元に戻す方法がわかりません。
逆シリアル化すると、次のエラーが表示されます{"There is an error in XML document (0, 0)."}
:{"Root element is missing."}
検索しましたが、このエラーはさまざまな方法で生成されるようです。私のコードに当てはまる解決策は見つかりませんでした (私が知る限り)。
私が抱えているこれらの問題の原因または解決策に関する情報をいただければ幸いです。
形