2012-12-07 66 views

回答

15

真的實施非通用IEnumerable,或通用IEnumerable<T>?如果您可以實施通用方法,那麼您的生活將變得更加簡單 - 因爲您可以使用LINQ to Objects,它確實具有Contains擴展方法。否則,您可能會使用CastOfType(例如,)從非泛型轉換爲泛型。

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

這將是更好,如果你只是實現通用接口下手雖然:)

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; 
    } 

如果你願意,你可以添加自定義比較的參數TI擴展方法包含

相關問題