私のコードには、すでに IEnumerable から派生しているクラスがあります。そのインスタンスで「Contains」メソッドを使用して、そのリスト内の何かを探す方法があるかどうか疑問に思っていましたか?
質問する
34964 次
3 に答える
25
非ジェネリックまたはジェネリックを本当に実装していますか? 汎用のものを実装できる可能性がある場合は、実際に拡張メソッドを持つLINQ to Objectsを使用できるため、人生はずっと簡単になります。IEnumerable
IEnumerable<T>
Contains
そうしないと、Cast
orを使用して非ジェネリックからジェネリックに変換できる可能性があります。OfType
bool found = nonGeneric.Cast<TargetType>().Contains(targetItem);
ただし、最初に汎用インターフェイスを実装した方が良いでしょう:)
于 2012-12-07T16:42:51.030 に答える
24
いいえ、IEnumerable<T>
インターフェイスにそのようなメソッドはありません。あなたが使うことができるけれどもがありextension method
ます。
using System.Linq;
その後:
IEnumerable<string> foos = new[] { "foo", "bar", "baz" };
bool IsThereABar = foos.Contains("bar");
于 2012-12-07T16:42:30.633 に答える
1
public static bool Contains<T>(this IEnumerable source, T value)
{
foreach (var i in source)
{
if (Equals(i, value))
return true;
}
return false;
}
必要に応じて、カスタム比較子をパラメーター ti 拡張メソッドを含むとして追加できます。
于 2017-04-18T10:53:34.947 に答える