連載

C#入門

第14 C#の配列機能

(株)ピーデー
川俣 晶
2001/10/24


参照型配列の初期化

 参照型の配列も初期化できる。以下はClass1クラスの配列変数を初期化リストで初期化した例である。

 1: using System;
 2:
 3: namespace ConsoleApplication75
 4: {
 5:   class Class1
 6:   {
 7:     private int n;
 8:     public Class1( int param )
 9:     {
10:       this.n = param;
11:     }
12:     static void Main(string[] args)
13:     {
14:       Class1 [] ar = new Class1 [] { new Class1(1), new Class1(2), new Class1(3) };
15:       for( int i=0; i<3; i++ )
16:       {
17:         Console.WriteLine( ar[i].n );
18:       }
19:     }
20:   }
21: }
参照型配列の初期化を行っているサンプル・プログラム6
配列の要素としてClass1のインスタンスを設定している。

 これを実行すると以下のようになる。

サンプル・プログラム6の実行結果
配列作成時にClass1のコンストラクタに渡した値が順に表示される。

 ここでポイントになるのは、14行目の初期化リストの中に、そのものズバリ、Class1クラスのインスタンスを作成するnewを書き込んでいることである。このような書き方も可能である。

配列のメソッド

 配列変数は、一種のインスタンスである。これは、システムに標準で含まれるSystem.Arrayクラスから継承されたものであり、このクラスが公開するメソッドなどはすべて利用可能である。以下はそれを用いた例である。

 1: using System;
 2:
 3: namespace ConsoleApplication76
 4: {
 5:   class Class1
 6:   {
 7:     static void Main(string[] args)
 8:     {
 9:       int [] ar = { 0, 1, 2, 3, 4 };
10:       for( int i=ar.GetLowerBound(0); i<=ar.GetUpperBound(0); i++ )
11:       {
12:         Console.WriteLine( ar[i] );
13:       }
14:     }
15:   }
16: }
配列のメソッドを使用したサンプル・プログラム7
配列はSystem.Arrayクラスを継承しているため、そのクラスのメソッドを配列に対して利用することができる。

 これを実行すると以下のようになる。

サンプル・プログラム7の実行結果
配列の下限から上限までの各要素の値が順に表示される。

 10行目に出てくるGetLowerBoundメソッドは、配列の添え字の下限を返す。GetUpperBoundメソッドは、添え字の上限の値を返す。それぞれ、引数の0というのは、最初の次元を意味する。1次元配列の場合は常にゼロだが、2次元以上になると、何次元目の上限、下限の値を得るか示すために、0から次元数マイナス1の値のいずれかを指定する。このように、配列はただ配列なのではなく、それ自身がインスタンスとしての側面も持つことを忘れてはならない。

配列をforeachでアクセス

 すでに述べたとおり、配列はさまざまなメソッドなどを持っている。その中には、IEnumerableというインターフェイスの実装を含む。初心者はIEnumerableの意味を理解する必要はないが、それがもたらす効能は知っている価値がある。つまり、foreach文が使えるのである。以下に、それを使った例を示す。

 1: using System;
 2:
 3: namespace ConsoleApplication77
 4: {
 5:   class Class1
 6:   {
 7:     static void Main(string[] args)
 8:     {
 9:       int [] ar = { 0, 1, 2, 3, 4 };
10:       foreach( int n in ar )
11:       {
12:         Console.WriteLine( n );
13:       }
14:     }
15:   }
16: }
配列に対してforeach文を使用したサンプル・プログラム8
配列はIEnumerableインターフェイスを実装しているためforeach文が使用できる。

 これを実行すると以下のようになる。

サンプル・プログラム8の実行結果
foreach文により各要素が順に取り出され、表示される。

 foreach文の効能により、10行目から13行目までのループをまわりながら、配列の要素が1つずつ変数nに代入される。これにより、配列の添え字の範囲を意識することなく、すべての要素にアクセスすることが可能になる。

 しかし、foreach文でアクセスした場合、配列の内容を書き換えられないことに注意が必要である。つまり、この場合、変数nの値を書き換えても、それは変数nが変わるだけであって、配列の要素の値が変わることにはならないのである。


 INDEX
  第14回 C#の配列機能
    1.C#の一次元配列
    2.参照型の配列
  3.参照型配列の初期化
    4.配列をソートする
    5.配列のバイナリ・サーチ
    6.文字配列と文字列の相互変換
 
「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 記事ランキング

本日 月間