|  |  | 
 
| 連載:[完全版]究極の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 記事ランキング
		
		
			本日
			月間