[C#] ArrayListを使った動的配列

このページのタグ:[C#] [ArrayList] [C# 配列] [C# 動的配列]
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 = new ArrayList();
にてArrayListクラスの変数dataを定義し、インスタンスを作成します。
data.Add(25);
にて、ArrayListに値(上記の場合は数値の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";
  }
}
上記のコードの実行結果は

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

補足

C# 2.0以降ではジェネリックに対応したList<T>が用意されているため、こちらを用いたほうがシンプルで堅牢なコードが記述できます。くわしくは「[C#] List<type> を用いる (ジェネリクスによる動的な配列、データ格納)」の記事を参照してください。
登録日 :2010-12-31    最終更新日 :2016-03-27
このページのタグ:[C#] [ArrayList] [C# 配列] [C# 動的配列]
JapaneseEnglish
プライバシー    iPentecについて
iPentec all rights reserverd. (ISDC)