C#の「IEnumerable」型の変数について
「IEnumerable<T>」型は、ジェネリック(汎用)インターフェースで、要素を順番に列挙するための機能を提供します。
どのような機能を規定したインターフェースか
具体的には、配列やリスト、セットなどのコレクションに対して、要素を1つずつ順番に取り出し処理を行うことができます。また、LINQ(Language Integrated Query)などのクエリ言語を用いて、データを抽出したり、条件に合致する要素を検索したりすることもできます。
宣言と代入のサンプル
「IEnumerable<T>」型の変数は、列挙可能なオブジェクト(IEnumerable)のインスタンスを表します。ジェネリックなので、型引数Tには、列挙する要素の型を指定します。例えば、以下のように宣言することができます。
IEnumerable<int> numbers = new List<int>() { 1, 2, 3, 4, 5 };
この場合、変数numbersは、int型の要素を列挙可能なList<int>のインスタンスを指します。numbersを用いて、forループやLINQクエリを実行することができます。
実際のListクラスのシグネチャ(実装の本体部分の1行目)
public class List<T> : IEnumerable<T>
サンプル
以下は、int型の要素を持つList<T>のインスタンスを作成し、IEnumerable<T>型の変数を用いて、要素を1つずつ取り出して処理を行う例です。
using System;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
// int型の要素を持つList<T>のインスタンスを作成
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
// IEnumerable<T>型の変数に代入
IEnumerable<int> enumerableNumbers = numbers;
// 要素を1つずつ取り出して処理を行う
foreach (int num in enumerableNumbers)
{
Console.WriteLine(num * 2); // 2倍した値を出力
}
}
}
この例では、List<int>型の変数numbersに1~5の整数値を格納し、IEnumerable<int>型の変数enumerableNumbersに代入しています。その後、foreach文を用いて、enumerableNumbersから要素を1つずつ取り出し、2倍した値をコンソールに出力しています。結果として、以下のような出力が得られます。
2
4
6
8
10
ディスカッション
コメント一覧
まだ、コメントがありません