2012-06-07 11 views

答えて

13

Distinctの方法は、HashSet<>ではなく、HashSet<>で実装されているIEnumerable<>にあります。

特定の種類の拡張メソッドを「省略」することはできません。ある型に追加されると、その型と派生したもののすべてが拡張メソッドを取得します。

説明すると、objectを拡張すると、関連する名前空間を追加した場合にすべてが壊れてしまいます。

namespace System 
{ 
    public static class ObjectExtensions 
    { 
     public static void Garbage(this object foo) 
     { 
     } 
    } 
} 
+0

をDistinct'はHashSetのは '実装にたまたま' 'IEnumerableを'上の拡張メソッド、ある '明確にする:だから追加行きません。 – bluevector

+0

@jonnyGoldはい、あなたのコメントの前に自分の答えを編集したばかりです。とにかく説明してくれてありがとう。 –

+1

もっと正確に言うと、 'Distinct'は' IEnumerable <> 'を拡張し静的クラス' System.Linq.Enumerable'に存在する拡張メソッドです。 –

関連する問題