問題タブ [ienumerable]
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# - IEnumerable にする方法読み取り専用?
以下のコードのリストlist1Instance
とメソッドが同じコレクションを指しているのはなぜですか?p
Main
の戻り値の型を変更せずに、この動作を変更できますList1.Get()
か?
ありがとう
c# - C# List<> GroupBy 2 値
Framework 3.5 で C# を使用しています。Generic List<> を 2 つのプロパティですばやくグループ化しようとしています。この例では、CustomerId、ProductId、および ProductCount のプロパティを持つ注文タイプのリストがあるとします。ラムダ式を使用して、CustomerId と ProductId でグループ化された ProductCounts の合計を取得するにはどうすればよいですか?
c# - IEnumerable インターフェイスを使用すると同時に、XMLSerializer で GetEnumerator() を使用しないようにするにはどうすればよいですか?
非常に大きなファイル (メモリに収まらない) を解析するクラスがあり、現在、IEnumerable インターフェイスを使用して foreach を使用しているため、解析されたファイルの内容を行ごとに簡単に取得できます。現在、XMLSerializer を使用してこれをファイルに書き込もうとしています。クラスを列挙することを主張します。私の場合、これはファイルの大きな解析済みコンテンツを XML にダンプすることを意味します。このインターフェイスを使用して、XMLSerializer から「期待される」機能を取得する方法はありますか?
(IEnumerable ではなく何らかのコレクション インターフェイスを実装していた場合、これは予想される結果のように見えるため、これを「予想される」と呼ぶだけです。おそらく、IEnumerable とコレクションの私の概念はすべてうまくいきません。:( )
c# - IEnumerable戻り型として
IEnumerable<T>
戻り型として使用することに問題はありますか? FxCop は返品について不平を言っていますList<T>
(代わりに返品を勧めていCollection<T>
ます)。
ええと、私は常に「できる限りのことは受け入れますが、最大限のものを返す」というルールに導かれてきました。
そういう意味では返すIEnumerable<T>
のは悪いことなのですが、「遅延検索」を使いたいときはどうすればいいのでしょうか?また、yield
キーワードはそのようなグッズです。
c# - イールド キーワードの付加価値
実際の状況で「yield」キーワードを使用する場所をまだ見つけようとしています。
私はこの件に関するこのスレッドを見ます
しかし、受け入れられた回答では、誰かが Integers() を反復している例としてこれを持っています
しかし、なぜ使用しないのですか
代わりにここに。より簡単なようです..
c# - IEnumerableはなぜですかイールドリターンを使用して反復処理を遅くしてからリスト
yield return
私は自分が書いているコードのいくつかを使ってステートメントをテストしてきました。私には2つの方法があります:
と
次に、foreach
各コレクションに対してループを使用します。
面白いのは、どういうわけかMyListCollection
、MyYieldCollectionよりも速くループして完全に印刷できるように見えることです。
結果:
- MyYieldCollection-> 2062
- MyListCollection-> 1847
私はこれの理由を本当に見ることができません、私は何かを逃していますか、それともこれは正常ですか?
c# - foreach ステートメントが、IEnumerable を実装するオブジェクトのみを受け入れるのではなく、'Collection' パターンを実装するオブジェクトを受け入れるのはなぜですか?
多くの人が私に理由を尋ねますが、私は彼らに対して良い答えを持っていません.
明らかに正当な理由があります。誰もそれを知っていますか?
ここで検索したところ、この質問が見つかりました。それがどのように機能するかを説明しますが、理由は説明しません。
.net - ループ内の Enumerable コレクションからオブジェクトを削除する方法
複製
列挙可能なコレクション (辞書内の IList または KeyValuePairs など) をループしているときに、オブジェクトを削除できないことを回避できるようにするための適切なパターンを誰かに教えてください。
たとえば、次の例は foreach 中に列挙されているリストを変更するため、失敗します。
過去に私は2つの方法を使用しました。
foreach を逆の for ループに置き換えました (オブジェクトを削除した場合にループしているインデックスを変更しないようにするため)。
また、ループ内で削除するオブジェクトの新しいコレクションを保存してから、そのコレクションをループして、元のコレクションからオブジェクトを削除しようとしました。
これらは問題なく機能しますが、どちらも気分が良くありません。誰かが問題に対するよりエレガントな解決策を思いついたのではないかと思っていました
c# - Enumerable.Range が直接の yield ループよりも速いのはなぜですか?
以下のコードは、同じソリューションを実行する 3 つの異なる方法のパフォーマンスをチェックしています。
結果は次のとおりです。
Enumerable.Aggregate はより多くのメソッド呼び出しを行うため、「for ループ」が他の 2 つのソリューションよりも高速であることは驚くべきことではありません。しかし、「Enumerable.Range」が「自作の IEnumerable」よりも高速であることに本当に驚きました。Enumerable.Range は単純な GetIntRange メソッドよりも多くのオーバーヘッドがあると思いました。
これにはどのような理由が考えられますか?