3

假设我有一个这样的 if 语句:

if (a > x || b > x || c > x || d > x) {}

假设它总是涉及相同的重复变量(在本例中为 x)和相同的操作,但所有使用之间的操作并不相同。例如,另一个 if 语句可能使用:

if (x.Contains(a) || x.Contains(b) || x.Contains(c) || x.Contains(d)) {}

有没有办法在 C# 中简化这些 if 语句,这样我们就不会一遍又一遍地输入相同的东西?我不想为这个实例调用额外的函数。

4

3 回答 3

8

您可以使用 LINQ,但如果您只有四个条件,它认为它不是很有用:

if (new[] {a,b,c,d}.Any(current => current > x))

if (new[] {a,b,c,d}.Any(current => x.Contains(current)))
于 2013-03-12T16:18:41.650 回答
2

您可以使用 Linq 的Any方法将||多个条件一起使用。

var tests = new int[] { a, b, c, d };

if (tests.Any(y => y > x)) { }

if (tests.Any(y => x.Contains(y))) { }

顺便说一句,如果您需要同时使用多个条件&&,您可以使用All.

if (tests.All(y => y > x)) { }

if (tests.All(y => x.Contains(y))) { }
于 2013-03-12T16:19:54.513 回答
1

没有什么能阻止您进行自己的扩展以使事情变得更清晰;

public static class LinqExtension
{
    public static bool ContainsAny<TInput>(this IEnumerable<TInput> @this, IList<TInput> items)
    {
        return @this.Any(items.Contains);
    }
}
于 2013-03-12T16:34:44.687 回答