C#ライブラリリファレンス - データの集合の中から指定した位置にある要素を得る
Enumerable静的クラスのElementAt拡張メソッドを使用して、指定した位置にある要素を取り出せます。
日常でたとえると
3番目の商品棚にあるウーロン茶を検品する。
使用に適した状況
任意の場所にある要素を取り出したい時。集合では並びは関係ありませんから、逐次的な処理をする時に必要になります。
サンプル
/*----------------------------------------------------
*
* データの集合の中から指定した位置の要素を取り出す
*
----------------------------------------------------*/
using System;
using System.Linq;
class Sample
{
static void Main( )
{
//データソースを用意
int max = 10;
int[ ] values = new int[ max ];
for ( int i = 0 ; i < max ; ++i )
values[ i ] = i + 1;
Console.WriteLine( "データ" );
foreach ( int v in values )
Console.Write( "{0} ", v );
Console.WriteLine(
Environment.NewLine );
//指定位置の要素を取り出す
Console.WriteLine(
"指定位置の要素を取り出します・・・" );
int index = 3;
Console.WriteLine(
"{0}に位置する要素は{1}です。",
index, values.ElementAt( index ) );
Console.WriteLine();
//存在しない要素を指定すると・・・
int errorIndex = 10;
try {
Console.WriteLine(
"{0}に位置する要素は{1}です。",
errorIndex, values.ElementAt(
errorIndex ) );
} catch ( ArgumentOutOfRangeException ) {
Console.WriteLine(
"{0}に要素は存在しません。",
errorIndex );
}
Console.WriteLine(
Environment.NewLine );
//終了
Console.WriteLine( "サンプル終了。" );
Console.ReadLine();
}
}
名前空間
Sytem.Linq名前空間を参照してください。
解説
集合指向プログラミンをしている時は、要素の位置は気にしません。集合同士を結合したり、任意の要素を射影したりします。しかしながらプログラミングの幅は広く、命令型プログラミングの逐次的処理も必要になります。
その状況で必要になるのが「位置を指定して要素を取り出す」処理です。その要求にこたえるのがEnumerable静的クラスのElementAt拡張メソッドです。各コレクションオブジェクト(コンテナオブジェクト)も、その手のプロパティ9を備えていたりしますが、IEnumerableインタフェースを実装するオブジェクトに対して、共通して使用できるので、より抽象的なプログラミングが可能となります。活用して、良いプログラムを作ろう。