C#で List<T> (List<type>) を用いてリストを利用するコードと実行結果を紹介します。
C# 2.0以降ではではジェネリクスが使えるようになりました。ジェネリクスを使うと動的な要素のリストやデータコンテナ型をシンプルに記述できます。
また、Listはリストの要素に添え字でアクセスできるため、動的な配列のように扱うこともできます。
List<(型名)> (オブジェクト名/変数名);
List<string> TextList;
(オブジェクト名/変数名) = new List<(型名)>();
numberList = new List<int>();
リストに要素を追加する場合は、Addメソッドを利用します。
(オブジェクト名/変数名).add((追加するオブジェクト));
TextList.add("Penguin");
下図のUIを作成します。フォームにButtonとTextBoxを配置します。TextBoxはMultiLinesプロパティをTrueに設定し複数行テキストボックスにします。
以下のコードを記述します。
using System;
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 ListDemo
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
List<string> strData = new List<string>();
strData.Add("Penguin");
strData.Add("Duck");
strData.Add("Dorphin");
strData.Add("Camel");
for (int i=0; i < strData.Count; i++) {
textBox1.Text += strData[i] +"\r\n";
}
}
}
}
以下のコードによりListのインスタンスを作成します。
List<string> strData = new List<string>();
以下の記述により(型名)型のリストを作成できます。今回はstring型のリストを作成しています。
List<(型名)>
以下のコードにより、Listに値を追加します。Addメソッドにより値をリストに追加できます。ArrayListとは異なり、Addメソッドの引数に与えられる型はstring型のみです。
strData.Add("Penguin");
strData.Add("Duck");
strData.Add("Dorphin");
strData.Add("Camel");
リストの要素を取り出し、テキストボックスに表示します。
リストの要素には次の書式でアクセスできます。取り出される型もリスト作成時に宣言した型で取り出せます。
リストのインスタンス[インデックス番号]
for (int i=0; i < strData.Count; i++) {
textBox1.Text += strData[i] +"\r\n";
}
プロジェクトを実行します。ウィンドウが表示されますので、button1をクリックします。
テキストボックスに下図の結果が表示されます。
ArrayListで記述した場合のコードは以下になります。
リストへの値の追加はジェネリクスを使った場合と変わりません。厳密には引数がobject型か宣言時に記述した型かの違いがあります。
リストの要素を取り出すコードはジェネリクスを使った場合は宣言時に記述した型で取り出せますが、ArrayListではobject型になるため、キャストが必要になります。
ArrayListの利用の詳細についてはこちらの記事を参照してください。
private void button7_Click(object sender, EventArgs e)
{
ArrayList strData = new ArrayList();
strData.Add("Penguin");
strData.Add("Duck");
strData.Add("Dorphin");
strData.Add("Camel");
for (int i=0; i < strData.Count; i++) {
textBox1.Text += (string)strData[i] + "\r\n";
}
}