Interactive Extensionsを自分で実装する – 11.IsEmpty

Interactive Extensions(Ix)を自分で実装する、11回目はIsEmptyです。

その名から予想できる通り、シーケンスが空かどうかを判断するためのものです。

static void IsEmptyTest()
{
    IEnumerable<int> noSequence = Enumerable.Range(1, 0); // count = 0
    var noSequenceResult = noSequence.IsEmpty();
    Console.WriteLine(noSequenceResult);

    IEnumerable<int> oneSequence = Enumerable.Range(1, 1);  // count = 1
    var oneSequnenceResult = oneSequence.IsEmpty();
    Console.WriteLine(oneSequnenceResult);
}

isempty
列挙アイテムが1つもなければTrue, 1つでもあればFalseを返します。実行例は省略しますが、nullに対してはちゃんとArgumentNullExceptionがスローされました。
では実装です。(Let’s Implement It!)

IsEmpty…シーケンスに列挙アイテムが1つでもあるかを確認する。

namespace EmulateInteractiveExtensions
{
    public static class EmulateIxExtensions
    {
        public static bool IsEmpty<TSource> (this IEnumerable<TSource> source)
        {
            if (source == null)
            {
                throw new ArgumentNullException();
            }
            return !source.GetEnumerator().MoveNext();
        }
    }
}

実装方法はいろいろあるかと思いますが、1文で済むのでIEnumeratorを使ってアイテムがあるかないかを判断しています。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中