1

yourがブール配列のIEnumerable<T>.All場合、メソッドが冗長であると感じることがよくあります。T

次のサンプル コードを考えると、All メソッドを使用することを検証するためのより良い方法はありますか

bool isOrdered = firstList
     .Zip(secondList, (first,second)=>first==second)
     .All(areSame => areSame); /* feels redundant */

他の一部の言語では、呼び出すだけで.All()すべての要素が true になります。akwardなしでc#でこのようなことは可能ですか.All(x=>x)

4

1 に答える 1

3

All演算子の述語を避けることはできません。これは署名の一部であり、オプションではありません。

public static bool All<TSource>(this IEnumerable<TSource> source, 
                                Func<TSource, bool> predicate)

あなたができることは、ブール値のコレクションに固有の独自のAll(またはより良いAllTrue)拡張機能を作成することです:

public static bool AllTrue(this IEnumerable<bool> source)
{
    return source.All(b => b);
}

public static bool AllFalse(this IEnumerable<bool> source)
{
    return source.All(b => !b);
}

使用法:

bool isOrdered = firstList
     .Zip(secondList, (first,second) => first == second)
     .AllTrue();
于 2013-07-17T06:38:07.180 に答える