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”的相同逻辑适用于相等检查器的重载。