2012-12-07 7 views

答えて

15

あなた本当には非ジェネリックIEnumerableを実装する、または汎用IEnumerable<T>ますか?おそらく一般的なものを実装することができれば、あなたの人生はもっと簡単になります。LINQ to Objectsを使うことができます。実際にはContains拡張メソッドがあります。

そうでなければ、CastまたはOfTypeを使用して非ジェネリックからジェネリックに変換する可能性があります。

bool found = nonGeneric.Cast<TargetType>().Contains(targetItem); 

あなたはちょうどあなたがしたい場合は、パラメータTIの拡張メソッドとしてカスタム比較子を追加することができます:)

14

いいえ、IEnumerable<T>インターフェイスにそのような方法はありません。あなたが使うことができるが、extension methodがある。

using System.Linq; 

、その後:

IEnumerable<string> foos = new[] { "foo", "bar", "baz" }; 
bool IsThereABar = foos.Contains("bar"); 
0
public static bool Contains<T>(this IEnumerable source, T value) 
    { 
     foreach (var i in source) 
     { 
      if (Equals(i, value)) 
       return true; 
     } 
     return false; 
    } 

かかわらを開始するための汎用的なインタフェースを実装した場合それはよりよいだろうが

が含まれています
関連する問題