私はLINQを理解したいと思って、この問題についていくつかの研究を行い、IEnumerable
とIQueryable
にLINQメソッドがあることを発見しました。しかし、私がこれらのタイプのドキュメントを見ると、私はLINQメソッドを見ません。LINQメソッドは拡張メソッドですか?
ランタイム時にIEnumerable/IQueryable
型に挿入されるLINQメソッドの拡張メソッドがありますかもしそうならば?
私はLINQを理解したいと思って、この問題についていくつかの研究を行い、IEnumerable
とIQueryable
にLINQメソッドがあることを発見しました。しかし、私がこれらのタイプのドキュメントを見ると、私はLINQメソッドを見ません。LINQメソッドは拡張メソッドですか?
ランタイム時にIEnumerable/IQueryable
型に挿入されるLINQメソッドの拡張メソッドがありますかもしそうならば?
IEnumerableにメソッドを追加すると、IEnumerableから派生したすべての型がそれ自身を実装する必要があることを意味します。拡張メソッドでは、実装をインタフェースに並べ替えることができます。
他の副作用は、Linqが導入されたときに.NET 2.0で書かれたコードがまだ3.0でコンパイルされるということです。それ以外の場合は、IEnumerableをプロジェクトのどこかに実装していれば、新しいメソッドをすべてインターフェイスに実装する必要があります。
Linq ToオブジェクトのLINQメソッドは、Enumerableクラスで定義されています。
さらに、LINQは、特定の構文を使用して宣言され、インターフェイスまたはクラスベースではないメソッドを検索します。 Jon SkeetのEdulinqシリーズが興味深いかもしれません。
MSDNリンクの延長方法。
それは上品な説明です。そして確かに、ジョンズの記事は一流です! – Zenwalker
これは疑問に思われる回答を得るための質問のようです。私はあなたが炎戦を始めようとしていると思います。 – jonathanpeppers
拡張メソッドは実行時に挿入されません。 – Tipx
Eric Lippertの[パターンに従ってください](http://blogs.msdn.com/b/ericlippert/archive/2011/06/30/following-the-pattern.aspx)をお読みください。理由を説明します。 – Eranga