【C#】ArrayListクラス

ArrayListクラスは、C#における非ジェネリックなコレクションの一つで、任意の型のオブジェクトを格納できる可変長の配列です。配列と異なり、ArrayListは要素の追加や削除に伴い、サイズを自動的に調整します。

主な特徴

  • 動的サイズArrayListは要素が追加されると自動的にサイズが増加し、削除されるとサイズが減少します。
  • 異なるデータ型を格納可能ArrayListは非ジェネリックであるため、異なるデータ型のオブジェクトを一つのコレクションに格納できます。
  • インデックスによるアクセスArrayListはインデックスを使用して要素にアクセスします。配列と同様に、0ベースのインデックスを使用します。

基本的な操作

1. インスタンスの作成

ArrayList arrayList = new ArrayList();

2. 要素の追加

Addメソッドを使用して、新しい要素を追加します。

arrayList.Add(10);
arrayList.Add("Hello");
arrayList.Add(true);

3. 要素へのアクセス

インデックスを指定して要素にアクセスします。

object element = arrayList[0];  // 10を取得

ArrayListはオブジェクト型を格納するため、要素を取り出す際に必要に応じてキャストが必要です。

int number = (int)arrayList[0];

4. 要素の削除

Removeメソッドを使用して、指定したオブジェクトを削除します。RemoveAtメソッドでインデックスを指定して削除することも可能です。

arrayList.Remove(10);        // 10を削除
arrayList.RemoveAt(0);       // 先頭の要素を削除

5. 要素の検索

Containsメソッドを使用して、指定した要素が含まれているかを確認できます。

bool exists = arrayList.Contains("Hello");  // true

6. サイズの取得

Countプロパティを使用して、ArrayListに格納されている要素の数を取得できます。

int size = arrayList.Count;

メリットとデメリット

メリット

  • 柔軟性: 異なる型のデータを一つのコレクションに格納できるため、柔軟なデータ管理が可能です。
  • 動的なサイズ: 要素の追加や削除に伴い、自動的にサイズが調整されるため、配列よりも柔軟に使用できます。

デメリット

  • 型の安全性が低い: 異なる型のデータを格納できる反面、取り出す際にキャストが必要で、間違ったキャストによるランタイムエラーのリスクがあります。
  • パフォーマンス: 非ジェネリックコレクションであるため、ボクシングやアンボクシングが発生し、パフォーマンスに影響を与える可能性があります。

使用例

以下は、ArrayListを使用して、複数の異なるデータ型の要素を格納し、それらを処理する簡単な例です。

using System;
using System.Collections;

class Program
{
    static void Main()
    {
        ArrayList arrayList = new ArrayList();

        // 異なる型の要素を追加
        arrayList.Add(100);
        arrayList.Add("C#");
        arrayList.Add(true);

        // 要素を表示
        foreach (object item in arrayList)
        {
            Console.WriteLine(item);
        }

        // 要素を削除
        arrayList.Remove(100);

        // 残りの要素を表示
        foreach (object item in arrayList)
        {
            Console.WriteLine(item);
        }
    }
}

まとめ

ArrayListクラスは、可変長で異なる型のデータを格納できる便利なコレクションですが、ジェネリック型のList<T>が推奨されることが多いです。ArrayListの柔軟性が必要な場合や、レガシーコードとの互換性を考慮する場合に使用するのが一般的です。

C#

Posted by hidepon