C#でマルチスレッドとIEnumerableを組み合わせる際の注意点についてまとめました。 はじめに IEnuemrableをサブスレッドから返すことを考える サブスレッドで行う処理にIEnumerableを渡すことを考える はじめに C#ではTaskなどのクラスを使うことでマルチスレッドで処理を行えます。 またIEnumerableを使うと処理を遅延評価できます。 共に便利な機能ですが、これらを組み合わせて使った際に使い方を間違えると、 実はマルチスレッドで処理が行われていなかったり、 まとめられるはずの評価処理がすべてのスレッドで行われたりします。 本記事ではこのあたりについてまとめます。 IEnuemrableをサブスレッドから返すことを考える 今以下のようにIEnumerable<string>を返す処理SomeHeavyEnumerable()をサブスレッドに逃がすことを考えます
今回は C# のインターフェースの IEnumerable<T> に関する説明です。 このインターフェースは非常に便利なのですが、 実装するにはちょっとしたテクニックが必要となります。 知らないとなかなか思いつきにくいところなので、 覚えておいて損はないと思います。 用途 前回紹介したIEnumerable インターフェース と同様に IEnumerable<T> は自作のコンテナークラス などで継承します。 IEnumerable を継承したクラスは foreach で使えるようになります。 IEnumerable<T> の場合は、 foreach で使えることに加えて、より大きなメリットがあります。 それは System.Linq を using しておくことによって、 LINQ で定義された多くの拡張メソッドが使用可能になることです。 C# やるなら LINQ を使おう | プログラ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く