• BPnet
  • ビジネス
  • IT
  • テクノロジー
  • 医療
  • 建設・不動産
  • TRENDY
  • WOMAN
  • ショッピング
  • 転職
  • ナショジオ
  • 日経電子版
  • PR

  • PR

  • PR

  • PR

  • PR

魅惑のC#

C#ではどうする? 配列とコレクションで複数のデータをまとめて扱う

第4回

渡辺 弘之、千代田 まどか=日本マイクロソフト 2017/05/18 日経ソフトウエア
出典:日経ソフトウエア 2017年6月号P80-84
(記事は執筆時の情報に基づいており、現在では異なる場合があります)
目次一覧

 この連載の第2回では変数、第3回ではクラスやオブジェクトを学びました。この第4回では、変数やオブジェクトといったデータをまとめて扱える仕組みを紹介します。それが「配列」と「コレクション」です。

配列はオブジェクトが並んだもの

 まず、C#の配列を学びます。リスト1のコードを例に説明します。このコードは、日曜日(Sunday)から土曜日(Saturday)までの文字列を配列に格納し、その配列のデータを表示するコードです。リスト1の(1)を見てください。

リスト1●配列を定義したプログラム
[画像のクリックで拡大表示]
string[] days = new string[] { … }

の部分が、配列を定義して初期化しているコードです。前回の連載では、オブジェクトのインスタンス化を学びました。そこでは、

Film film1 = new Film();

というコードが登場しましたね。「new」演算子を使ってFilmクラスをインスタンス化して、そのオブジェクトをFilm型の変数film1に格納しているコードです。

 クラスからオブジェクトを生成するのに使ったnew演算子は、配列を生成する際にも使います。ここが配列を生成する際のポイントです。

 そしてC#では、配列をオブジェクト(配列オブジェクト)として表現します。つまり(1)では、生成した配列オブジェクトを変数daysに格納しているのです。

 配列オブジェクトには、同じ型のオブジェクトが並んで格納されます。(1)では、string型(文字列型)のオブジェクトが配列オブジェクトに並んで格納されているというわけです。

 この配列オブジェクトに格納されたそれぞれのオブジェクトを要素と呼び、各オブジェクトには番号(インデックス)が割り振られています。

 配列オブジェクトを生成する際は、要素に初期値を代入して初期化することも可能です。それが右辺の{ … }の中身です。要素を「,(カンマ)」で区切れば、格納するオブジェクトに対してインデックスがゼロから順番に割り振られていきます。つまり(1)のコードは、図1のような処理を行っているのです。

図1●配列のイメージ
[画像のクリックで拡大表示]

 ちなみに、リスト1ではnew演算子を使って配列オブジェクトを生成しましたが、配列はよく利用するデータ構造なので、わざわざnew演算子を使ってオブジェクトを生成するのは面倒に感じるかもしれません。

 C#には、配列オブジェクトを定義するための簡易記法が備わっています。(1)のコードは、

string[] days = {"Sunday", … , "Saturday"};

と記述しても同じ処理になります。また、連載第2回(変数の宣言)で紹介したvarを用いて、

var days = new[] {"Sunday", …, "Saturday"};

と記述することも可能です。

ここから先はITpro会員(無料)の登録が必要です。

次ページ 配列の要素を順番に取り出す
  • 1
  • 2
  • 3
  • 4
  • 5

あなたにお薦め

連載新着

連載目次を見る

今のおすすめ記事

  • 【記者の眼】

    ラオスの古都、そして世界も日本も席巻する中国アプリ

     9月末、遅い夏休みを取って「ラオス」へ旅をしてきました。急に行き先を決めたこともあり、ガイドブックすら読まずに下調べゼロで入国。「一体現地に何があるんだろう」「水は飲めるのか」「治安も不安だ」――。様々なネガティブイメージが頭によぎりつつタラップから降り立った場所は、古都ルアンパバーン。

  • 【何がすごいの?「5G」5つの疑問】

    5Gはどれくらい速いの?

     第5世代移動通信システム(5G)の利用者が体感できる実効速度は、現行の4G(LTE)の100倍に当たる毎秒数百メガ~数ギガビット。携帯最大手のNTTドコモはそう想定する。通信条件の良いピーク時の実効速度は、サービス開始当初は毎秒数ギガビットにとどまるが、その後毎秒10ギガビット以上へと段階的に速ま…

ITpro SPECIALPR

What’s New!

経営

アプリケーション/DB/ミドルウエア

クラウド

運用管理

設計/開発

サーバー/ストレージ

ネットワーク/通信サービス

セキュリティ

もっと見る