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の利点
- 柔軟性:IEnumerableは様々なコレクション型(List、Array、Dictionary等)の基底インターフェースであり、これらを統一的に扱えます。
- 遅延評価:IEnumerableは要素を必要になるまで評価しないため、大量のデータを扱う際にメモリ効率が良くなります。
- 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に関する関連記事
-
C# enum
【C#入門】enum Flags属性の使い方と活用法
-
C# enum
【C#入門】enumと数値の関係:基本から応用まで
-
C# enum
【C#入門】enumと継承の関係:基本から応用まで
-
C# enum
【C#入門】IEnumerableインターフェースの基本と活用方法
-
C# enum
【C#入門】enumをToString()で文字列に変換する方法
-
C# enum
【C#入門】enumをforeachで簡単に列挙する方法
-
C# enum
【C#入門】enum型と文字列の相互変換方法を分かりやすく解説
-
C# enum
【C#入門】enum型とstring型の相互変換方法を解説
-
C# enum
【C#入門】enum型とint型の相互変換方法を徹底解説!
コメント