public static bool Any<T>(T item, params T[] items)
{
return items.Contains(item);
}
使用法:
if (Any(6, 1, 2, 3, 4, 5, 6, 7))
{
// 6 == 6
}
if (Any("Hi", "a", "cad", "asdf", "hi"))
{
}
else
{
// "Hi" != "hi" and from anything else.
}
または:
public string[] items = new string[] {"a", "cad", "asdf", "hi"};
...
if (Any("Hi", items))
{
Works just as well.
}
より高度な比較もできます。たとえば、次のようにします。
if (person.Name == p1.Name ||
person.Name == p2.Name ||
person.Name == p3.Name ||
person.Name == p4.Name ||
person.Name == p5.Name || ...)
{
}
あなたが持つことができます:
public static bool Any<T>(T item, Func<T, T, bool> equalityChecker, params T[] items)
{
return items.Any(x => equalityChecker(item, x));
}
そして、やります:
if (Any(person, (per1, per2) => p1.Name == p2.Name, p1, p2, p3, p4, p5, ...)
{
}
編集
もちろん、それを拡張メソッドにすることもできます。
public static bool Any<T>(this T item, params T[] items)
{
return items.Contains(item);
}
使用法:
var b = 6.Any(4, 5, 6, 7); // true
そして、シグネチャにキーワード「item」を追加する同じロジックが、equalityChecker を使用したオーバーロードにも適用されます。