|
|
連載:[完全版]究極のC#プログラミング
Chapter4 Findメソッド
川俣 晶
2009/09/14 |
|
|
4.4 複数の結果がほしい場合
前節の例では見つけ出す対象は1つだけだが、繰り返しを打ち切らず、すべての対象から探し出すことも容易である。その方法は、Findメソッドではなく「FindAllメソッド」を使うだけである(リスト4.7参照)。それにより、結果が配列として得られるようになる。
using System;
class Program
{
static void Main(string[] args)
{
string[] 玉電駅名 = {
"下高井戸","七軒町","六所神社前","山下","豪徳寺前","宮ノ坂"
};
string[] 前の付く駅名
= Array.FindAll(玉電駅名, (駅名)=>駅名.Contains("前"));
Array.ForEach(前の付く駅名, (駅名)=>
{
Console.WriteLine("前の付く駅名には{0}があります。", 駅名);
});
}
}
|
|
リスト4.7 リスト4.4を複数の結果を得るように改造したもの |
前の付く駅名には六所神社前があります。
前の付く駅名には豪徳寺前があります。
|
|
リスト4.7の実行結果 |
この場合には結果が複数になるため、それを格納するコレクションのオブジェクトが生成される。その分だけ、メモリと実行速度にインパクトを与えてしまう。foreach文で繰り返しながら、見つかったオブジェクトに関して出力を行う書き方よりも、メモリを消費し、実行速度が落ちるというわけである。それゆえに、採用するかどうかはケースバイケースということになるだろう。しかし、それらが問題にならない場合は、ソースを扱いやすくする良いやり方ではないかと思う。
Insider.NET 記事ランキング
本日
月間