MENU

【C#入門】IEnumerableインターフェースの基本と活用方法

C#プログラミングにおいて、コレクションやシーケンスを扱う際に欠かせないのがIEnumerableインターフェースです。このインターフェースを理解し活用することで、より柔軟で効率的なコードを書くことができます。この記事では、IEnumerableの基本概念から実践的な使用方法まで、初心者の方にも分かりやすく解説していきます。

目次

IEnumerableとは

IEnumerableは、C#の中でも最も基本的なインターフェースの一つで、要素の集まり(コレクション)を表現します。このインターフェースを実装したクラスは、foreach文で繰り返し処理ができるようになります。

IEnumerableの基本的な使い方

以下に、IEnumerableを使用した簡単な例を示します:

using System;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        // リストの作成(IEnumerableを実装している)
        List<string> fruits = new List<string> { "りんご", "バナナ", "オレンジ" };

        // IEnumerable<string>として扱う
        IEnumerable<string> fruitCollection = fruits;

        // foreach文で繰り返し処理
        foreach (string fruit in fruitCollection)
        {
            Console.WriteLine(fruit);
        }
    }
}

このコードを実行すると、次のような出力が得られます:

りんご
バナナ
オレンジ

IEnumerableの利点

  1. 柔軟性:IEnumerableは様々なコレクション型(List、Array、Dictionary等)の基底インターフェースであり、これらを統一的に扱えます。
  2. 遅延評価:IEnumerableは要素を必要になるまで評価しないため、大量のデータを扱う際にメモリ効率が良くなります。
  3. LINQとの相性:LINQのメソッドのほとんどがIEnumerableを受け取り、IEnumerableを返すため、複雑なデータ操作が簡単に行えます。

IEnumerableと遅延評価

IEnumerableの遅延評価の特性を活かした例を見てみましょう:

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {
        // 1から10までの数を生成
        IEnumerable<int> numbers = Enumerable.Range(1, 10);

        // 偶数のみをフィルタリング
        IEnumerable<int> evenNumbers = numbers.Where(n => n % 2 == 0);

        // この時点では実際の計算は行われていない

        // 結果を使用する時点で計算が行われる
        foreach (int num in evenNumbers)
        {
            Console.WriteLine(num);
        }
    }
}

このコードでは、Whereメソッドを呼び出した時点では実際のフィルタリングは行われず、foreachループで要素にアクセスする時に初めて計算が実行されます。

カスタムIEnumerableの実装

自作のクラスでIEnumerableを実装することで、そのクラスのインスタンスをforeachで使用できるようになります。以下は簡単な例です:

using System;
using System.Collections;
using System.Collections.Generic;

public class Fibonacci : IEnumerable<int>
{
    private readonly int _count;

    public Fibonacci(int count)
    {
        _count = count;
    }

    public IEnumerator<int> GetEnumerator()
    {
        int prev = 0, current = 1;
        for (int i = 0; i < _count; i++)
        {
            yield return current;
            int next = prev + current;
            prev = current;
            current = next;
        }
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
        return GetEnumerator();
    }
}

class Program
{
    static void Main(string[] args)
    {
        Fibonacci fib = new Fibonacci(10);
        foreach (int num in fib)
        {
            Console.WriteLine(num);
        }
    }
}

このコードは、フィボナッチ数列を生成するクラスを定義し、IEnumerableインターフェースを実装しています。

IEnumerableは、C#プログラミングにおいて非常に重要な概念です。この記事で紹介した基本的な使い方や利点を理解することで、より効率的で柔軟なコードを書くことができるようになるでしょう。さらに深く学ぶことで、LINQやその他の高度なC#の機能を使いこなせるようになります。

enumに関する関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次