C# 我们是否有一个;包括「;IEnumerable中的方法
我的代码中有一个类已经从IEnumerable派生。C# 我们是否有一个;包括「;IEnumerable中的方法,c#,C#,我的代码中有一个类已经从IEnumerable派生。 我想知道是否有一种方法可以在其指令上使用“Contains”方法来查找该列表中的某个内容?不,界面中没有这样的方法。有一个想法,你可以使用 using System.Linq; 然后: IEnumerable<string> foos = new[] { "foo", "bar", "baz" }; bool IsThereABar = foos.Contains("bar"); IEnumerable foos=new[]{
我想知道是否有一种方法可以在其指令上使用“Contains”方法来查找该列表中的某个内容?不,界面中没有这样的方法。有一个想法,你可以使用
using System.Linq;
然后:
IEnumerable<string> foos = new[] { "foo", "bar", "baz" };
bool IsThereABar = foos.Contains("bar");
IEnumerable foos=new[]{“foo”、“bar”、“baz”};
bool IsThereABar=foos.Contains(“bar”);
您真的实现了非泛型的IEnumerable
,还是泛型的IEnumerable
?如果您可以实现泛型方法,那么您的生活将变得简单得多,因为您可以使用泛型方法,它确实有一个扩展方法
否则,您可能会使用Cast
或of type
将非泛型转换为泛型,例如
bool found = nonGeneric.Cast<TargetType>().Contains(targetItem);
bool found=nonGeneric.Cast().Contains(targetItem);
如果您刚开始实现通用接口会更好:)publicstaticbool-Contains(这个IEnumerable源代码,T值)
{
foreach(源中的var i)
{
if(等于(i,值))
返回true;
}
返回false;
}
如果需要,可以将自定义比较器添加为ti扩展方法包含的参数
public static bool Contains<T>(this IEnumerable source, T value)
{
foreach (var i in source)
{
if (Equals(i, value))
return true;
}
return false;
}