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";
}
}
上記のコードの実行結果は以下の結果となります。
ArrayList
に
Add
した場合は
Add
メソッドの引数に与えたオブジェクトのコピーが作られ
ArrayList
に挿入されることがわかります。
(
Add
メソッドに与えたオブジェクトがそのまま格納される場合、実行結果は4行ともすべて"Camel"が表示されるため。)
Penguin
Duck
Dorphin
Camel
補足
C# 2.0以降ではジェネリックに対応した
List<T>
が用意されているため、こちらを用いたほうがシンプルで堅牢なコードが記述できます。くわしくは「
リストの利用 Listの利用」の記事を参照してください。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用