連載:[完全版]究極の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文で繰り返しながら、見つかったオブジェクトに関して出力を行う書き方よりも、メモリを消費し、実行速度が落ちるというわけである。それゆえに、採用するかどうかはケースバイケースということになるだろう。しかし、それらが問題にならない場合は、ソースを扱いやすくする良いやり方ではないかと思う。


 INDEX
  [完全版]究極のC#プログラミング
  Chapter4 Findメソッド
    1.4.1 MATステートメントの思い出
    2.4.2 ForEachメソッドのbreak問題
    3.4.3 ForEachだけではない繰り返しメソッド
  4.4.4 複数の結果がほしい場合
    5.4.5 偉大なる前進とは何か?
    6.4.6 そして、LINQへ続く/【Exercise】練習問題
 
インデックス・ページヘ  「[完全版]究極のC#プログラミング」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間