ArrayListを使った動的配列 - C#

ArrayListクラスを利用したリストのコードを紹介します。

概要

C#では動的な要素を管理するためにArrayListクラスが用意されています。ArrayListはリストの要素に添え字でアクセスできるため、動的な配列のように扱うことができます。

プログラム例

UI

下図のUIを作成します。フォームにTextBoxとButtonを1つずつ配置します。

コード

下記のコードを記述します。ButtonのClickイベントへのコードの実装と、using節にSystem.Collections; を追記します。
using System;
using System.Collections;         //追加
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ArrayListDemo
{
  public partial class FormDemo1 : Form
  {
    public FormDemo1()
    {
      InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    private void button1_Click(object sender, EventArgs e)
    {
      ArrayList data = new ArrayList();
      data.Add(25);
      data.Add(6);
      data.Add(128);
      data.Add(2);
      data.Add(8);
 
      for (int i=0; i<data.Count; i++){
        textBox1.Text += Convert.ToString((int)data[i])+"\r\n";
      }
    }
  }
}

解説

以下のコードでArrayListクラスの変数dataを定義し、インスタンスを作成します。
 ArrayList data = new ArrayList();

次のコードで、ArrayListに値(上記の場合は数値の25)を挿入します。
 data.Add(25);

ArrayListへの要素のアクセスは以下の記述でアクセスできます。
 data[i]

上記のdata[i]の型はobject型になるため、キャストが必要になります。intの値を挿入した場合は以下の記述になります。
 (int)data[i]

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。


ボタンをクリックします。ArrayListに挿入したデータがテキストボックスに表示されました。

参考情報

private void button7_Click(object sender, EventArgs e)
{
  ArrayList strData = new ArrayList();
  string data ="Penguin";
  strData.Add(data);
  data = "Duck";
  strData.Add(data);
  data = "Dorphin";
  strData.Add(data);
  data = "Camel";
  strData.Add(data);

  for (int i=0; i < strData.Count; i++) {
    textBox1.Text += (string)strData[i] + "\r\n";
  }
}

上記のコードの実行結果は以下の結果となります。 ArrayListAddした場合はAddメソッドの引数に与えたオブジェクトのコピーが作られArrayListに挿入されることがわかります。 (Addメソッドに与えたオブジェクトがそのまま格納される場合、実行結果は4行ともすべて"Camel"が表示されるため。)
Penguin
Duck
Dorphin
Camel

補足

C# 2.0以降ではジェネリックに対応したList<T>が用意されているため、こちらを用いたほうがシンプルで堅牢なコードが記述できます。くわしくは「リストの利用 Listの利用」の記事を参照してください。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2010-12-31
iPentec all rights reserverd.