C#のArrayListとは?インデックスでアクセスできるコレクションの基本と使い方
C#のArrayListコレクションとは
ArrayListクラスは、個別にインデックスを指定してアクセスできる、順序付きのオブジェクトコレクションを表します。配列の代替手段として利用でき、要素数が動的に変化する場合に特に便利です。
ArrayListはSystem.Collections名前空間に属しており、任意の型のオブジェクトを格納できます。ただし、格納される要素はすべてobject型として扱われるため、取り出す際には適切な型へのキャストが必要になる点に注意しましょう。
ArrayListクラスの主なプロパティ
以下の表は、ArrayListクラスでよく使用されるプロパティの一覧です。
| 番号 | プロパティと説明 |
|---|---|
| 1 | Capacity ArrayListが格納できる要素の総数を取得または設定します。 |
| 2 | Count ArrayListに実際に含まれている要素の数を取得します。 |
| 3 | IsFixedSize ArrayListが固定サイズかどうかを示す値を取得します。 |
| 4 | IsReadOnly ArrayListが読み取り専用かどうかを示す値を取得します。 |
| 5 | Item 指定したインデックス位置にある要素を取得または設定します。 |
サンプルコード:Capacityプロパティの確認
次の例は、C#でArrayListを使用する基本的な方法と、容量(Capacity)を確認する方法を示しています。ArrayListの既定の容量は4です。
コード例
using System;
using System.Collections;
namespace Demo {
class Program {
static void Main(string[] args) {
ArrayList x = new ArrayList();
x.Add(45);
x.Add(53);
x.Add(12);
x.Add(88);
Console.WriteLine("Capacity: {0} ", x.Capacity);
}
}
}
実行結果
Capacity: 4
容量の自動拡張について
ArrayListは、要素を追加していき現在の容量を超えたときに、容量が自動的に2倍に拡張される仕組みを持っています。たとえば、既定の容量4に対して5つ目の要素を追加すると、容量は8に増加します。このため、開発者があらかじめサイズを管理する必要がなく、柔軟にデータを追加できます。
補足:モダンなC#ではList<T>が推奨
ArrayListは非ジェネリックコレクションのため、値型を格納する際のボックス化・ボックス化解除によるパフォーマンス低下や、型安全性の欠如といった課題があります。現在のC#では、System.Collections.Generic名前空間のジェネリックコレクションList<T>を使用することが一般的に推奨されています。List<T>は型安全であり、値型を扱う際のオーバーヘッドも発生しません。新規開発ではList<T>を選択するのが良いでしょう。
-
Windows 10でI/Oデバイスエラーを解決する9つの対処法【原因と修正手順を徹底解説】
Windows 10のI/Oデバイスエラーとは USBメモリ、SDカード、メモリーカード、外付けハードディスク、CDなどの外部ストレージデバイスに対して、データの読み取りやコピーといった入出力(I/O)操作が実行できない場合、「I/Oデバイスエラー」が表示されます。トラブルシューティングは原因によってはシンプルに済むこともあれば、時間のかかる複雑な作業になることもあります。このエラーはWindowsだけでなく、LinuxやmacOSなどすべてのプラットフォームで発生する可能性があります。本記事では、Windows 10のデスクトップ/ノートPCでI/Oデバイスエラーを解決する方法を詳しく解説
-
Windows 10でqBittorrentのI/Oエラーを解決する9つの対処法
qBittorrentのI/Oエラーにお困りではありませんか?多くのユーザーから、アプリの起動時に何度もエラーが発生してダウンロードが中断されるという報告が寄せられています。この記事では、Windows 10でqBittorrentの入出力(I/O)エラーを解消するための完全ガイドをわかりやすくご紹介します。 Windows 10でqBittorrentのI/Oエラーを修正する方法 qBittorrentは、ボランティア開発者たちの手によって無料で提供されているオープンソースソフトウェアです。µTorrentの代替となる、より洗練されたBitTorrentクライアントと言えます。Qt 5ツ