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 を使用できますが、条件が 4 つしかない場合はあまり役に立ちません。

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 に答える