問題タブ [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 投票する
1 に答える
196 参照

c# - 任意のインデックスを使用してIEnumerable継承スパース配列を作成したい

私は作成しようとしています:

  • 任意のインデックスとスパース配列
  • スパース配列にIEnumerableを継承させます。

これまでのところ、インデックス付けがあります...IEnumerableの部分は何をすべきかわかりません。

Sparse Arrayオブジェクトをforeachループ内でディクショナリをループさせるにはどうすればよいですか?

更新を編集

皆さんからの入力のおかげで、コードを少し修正しました。

0 投票する
0 に答える
368 参照

c# - JavaScript 配列列挙子

moveNext、Reset、Current、および C# の IEnumerator で使用できるその他すべての機能を使用して監視可能な配列を拡張できるかどうかを確認するために、独自のソリューションを作成することを考えています。問題は、javascript 配列のプリミティブへの参照を取得できないことです。したがって、現在のインデックスに基づいて作成する必要があります。ただし、配列が変更された場合、列挙子が存在するはずの配列の要素がわからないという問題が発生しています。

たとえば、これは配列です

[1,3,3,3,3,5]

電流が [2] のインデックスにあるとしましょう

[3] または [4] のインデックスが削除された場合、現在は影響を受けませんが、[1] または [2] の削除と区別できなくなります。参照を記録できないため、インデックスで移動する必要がありますが、配列内の要素の数が変更された場合、列挙子は削除が現在の前または後のどちらにあったかを判断する方法がありません。これは、アレイの最後のバージョンを記録した場合でも同様です。現在の精度を維持できるように、これをどのように行うかについてのアイデアはありますか? 現在の要素がたまたま削除された場合、現在のポイントを次の要素にするには?

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

c# - ConfigurationElementCollectionでParallel.ForEachを使用しようとしています。動作させることができません

この質問から取得した次のコードを使用して作成したコレクションを含むカスタム構成セクションがあります。

次のように、プロパティを使用してコレクションを実装しました。

問題は、Parallel.ForEachを使用してコレクションをループしようとすると次のようになります

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

最後のものは私を困惑させました。IEnumeratorからIEnumerableに変換できませんか?

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

c# - When does IEnumerable.GetEnumerator get called instead of IEnumerable.GetEnumerator?

Looking at this code :

#xA;

Running :

#xA;

Yields

#xA;

I understand that the non-generic IEnumerator version is for compatibility.

Question:

  1. In what scenario will the non-generic be invoked?
  2. How can I force my code to be run with the non-generic IEnumerator?
0 投票する
1 に答える
3905 参照

c# - ForEach ループがクラスのプロパティを変更しない

これについていくつかの質問を見て、いくつかの調査を行いました。

私の理解では、IEnumerable で foreach を実行すると、T が参照型 (クラスなど) の場合、ループ内からオブジェクトのプロパティを変更できるはずです。T が値型 (構造体など) の場合、反復変数はローカル コピーになるため、これは機能しません。

次のコードを使用して Windows ストア アプリに取り組んでいます。

私のクラス:

コード:

結果が表示されると、「キーワード」プロパティは「ここでキーワードを設定する」になります。foreach ループにブレーク ポイントを配置すると、結果オブジェクトが変更されていないことがわかります...

何が起こっているかについてのアイデアはありますか?明らかな何かが欠けているだけですか?IEnumerable は Windows ストア アプリ用の .NET で異なる動作をしますか?

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

c# - ディクショナリの反復と変更

http://users.metropolia.fi/~dangm/blog/?p=67で説明されている問題の解決策を実装しようとしています。私は c# 言語を初めて使用します。列挙子を使用して、特定の条件で辞書を反復処理したいと考えています。そのため、current と previous.current の 2 つの変数があり、辞書の最初の要素を指します。previous は辞書の前の要素を指します。辞書私はフォローのように繰り返しています

問題は、辞書全体の前のポイントを辞書の最後の要素に、現在のポイントをランダムなキーと値のペア RawVariable(0,0) に初めて反復するときです。ディクショナリで、特定のキーまたは値を持つ要素を現在のポイントにする方法

ここに私のコードスニペットがあります

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

c# - 複数の利回りを持つ IEnumerator メソッドのリファクタリングに問題がある

私のコードの要点は次のとおりです。


ここで、上記のコードを 2 つの呼び出しを持つ単一の IEnumerator メソッドに分割したいと考えています。

これは私が思いついたものです:

これに関する問題は、ビートが正しい間隔で鳴る代わりに、両方のビートが同時に鳴ってしまい、これらの呼び出しが無限ループにあるため、間隔が考慮されていないために Unity がクラッシュしたことです。

上記のコードの 2 つの繰り返しブロックを単一の IEnumerator メソッドに抽出する最良の方法は何ですか?

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

c# - GetEnumerator のデフォルトの動作をオーバーライドする

への呼び出し方法を知る必要があるという要件がありますGetEnumerator()

私が考えることができる最善の方法は、デフォルトの動作をGetEnumerator私が作成したものにオーバーライドするGetEnumerator([CallerMemberName]string caller = null)ことです。

いくつかの呼び出しコードの例は次のとおりです。

目的は、たとえばメソッド"button1_click"で知りたいことですGetEnumerator()

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

c# - C#のIEnumeratorに相当するJava?

IteratorJavaライブラリにもいくつかのシリーズを列挙するインターフェースがありますが、 and とは少し別のロジックに従いますEnumerationか? つまり、次の要素に到達したかどうかを示すbooleanonを返す必要があり、現在の要素を返すメソッドが必要ですか?next()getCurrent()

アップデート

Iterator.next()IEnumerator.Current前者は各呼び出しでイテレータを進めますが、後者はそうではないため、 は と同等ではありません。

更新 2

独自の機能を備えた独自のクラスを設計しています。私の質問は、「有能な」アナロジーを見つけるためのものでした。からのサンプルC#は単なるサンプルであり、 からC#に何かを翻訳しているわけではありませんJava

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

c# - 空の文字列を HashTable.Add() の先頭に追加すると、「値が期待される範囲内に収まらない」という原因になる可能性がありますか?

私の人生では、レガシーコードがこれを行っている理由を理解できません。

...これがより賢明な場合:

私は肩をすくめて、このコードの一般的な奇妙さをぎゅっと詰め込みますが、このコードで「値が期待される範囲内に収まらない」というメッセージが表示され、それが問題なのかどうか疑問に思っています。より完全なコンテキストでは、コードは次のとおりです。

...そして私はこれを次のように変更しました:

...しかし、「値が期待される範囲内にありません」というメッセージが表示されます